花了兩天時間粗略看了一下git,雖然并沒有學得深入,但是想在此以一個初學者的角度對這兩天git的學習進行總結。
之前一直在用svn,但是想到github這樣的社區僅僅支持git,就想來感受一下git的魅力。
一、git相對于svn的優勢
svn必須連網才能將代碼提交到倉庫,git每一臺電腦都有一個本地倉庫,無需連網,隨時提交,需要的時候再將本地的修改推送到給遠程倉庫(實際上很多時候git也是有中央代碼倉庫的)或者你的團隊成員。
git擁有強大的分支管理,svn雖然也有,但是其方便有效性是比不上git的,隨時做標簽,版本回退,多分支工作等等。
個人認為github支持git,學了git才能用github也是git相較于svn的一個優勢。
二、git的入門
我總結了一些自認為初學者夠用的git命令。
創建版本庫:git init 在需要git代碼倉庫的目錄下敲git init即可,創建成功后使用ls -a命令就可以看到多了一個.git文件夾。
將文件添加到倉庫:git add <文件名> 將文件添加到代碼倉庫的暫存區,這時候并沒有真正將代碼提交到倉庫,git add -A 一次性添加所有文件,注意空目錄(新增的沒有文件的目錄)不會被添加到暫存區,如果需要添加空目錄,則需要修改.gitignore文件,具體可以百度。
將暫存區文件提交到倉庫:git commit -m <提交的說明> 用git commi命令才真正將暫存區的文件提交到倉庫,注意不寫說明,直接git commit 的話,會跳到一個窗口強制讓你寫說明,如果不寫直接退出的話這次提交是失敗的。
查看倉庫狀態:git status 可以掌握倉庫當前狀態,如某些被修改過但沒有提交的文件
對比兩次修改:git diff 用git diff可以對比兩次文件做了什么修改(沒有提交之前)
查看提交記錄:git log
版本回退:git reset –hard <版本號或標簽名> 具體版本號可以通過git log 查看,使用git reset –hard HEAD^可以回退到上一個版本,HEAD是一個指針,指向當前版本,HEAD^指上一個版本,HEAD^^代表上上個版本,以此類推
撤銷某個文件的上一次提交:git checkout – <文件名> –必須加,不加是切換分支的命令。
撤銷緩存區的修改:git reset HEAD <文件名>
刪除文件:git rm <文件名> + git commit -m <說明> git rm 可以刪除文件,刪除之后需要配合git commit才能達到真正的刪除
遠程倉庫 (1)創建ssh key:ssh-keygen -t rsa -C 在用戶主目錄查看有沒有.ssh文件夾,沒有則需要運行上面命令創建,在linux,root用戶主目錄是/root,其他用戶以此類推。 (2)添加遠程倉庫:git remote add origin git@<代碼倉庫地址> 添加的前提是遠程倉庫記錄有你的公鑰,添加成功后,遠程倉庫的名字就是origin (3)推送到遠程倉庫:git push -u origin master 注意該命令是將本地倉庫的master分支推送到遠程倉庫,如果需要推送其他分支則更改master為其他分支名 (4)從遠程庫克隆:git clone git@<倉庫地址>
創建并切換分支: git checkout -b <分支名>
查看當前分支:git branch
切換分支:git checkout <分支名>
合并分支:git merge <分支名> 將指定分支與當前分支合并
刪除分支:git branch -d <分支名>
在當前分支創建標簽:git tag <標簽名>
查看所有標簽:git tag
查看標簽信息:git show <標簽名>
刪除標簽:git tag -d <標簽名>
git 放棄本地修改 強制更新:
git fetch --all git reset --hard origin/master新聞熱點
疑難解答