git diff #是工做區(work dict)和暫存區(stage)的比較
git diff --cached #是暫存區(stage)和分支(master)的比較
git
Git比其餘版本控制系統設計得優秀,由於Git跟蹤並管理的是修改,而非文件。緩存
$ git add readme.txt $ git commit -m "append GPL" #-m爲添加評論
$ git log --pretty=oneline
$ git reset --hard 3628164
Git提供了一個命令git reflog用來記錄你的每一次命令:app
$ git reflog
工做區與緩存區的區別見圖fetch
cat readme.txt
$ git checkout -- readme.txt #命令中的--很重要,沒有--,就變成了「切換到另外一個分支」的命令,
git reset HEAD file能夠把暫存區的修改撤銷掉(unstage),從新放回工做區 $ git reset HEAD readme.txt
$ rm test.txt $ git rm test.txt $ git commit -m "remove test.txt"
$ git checkout -- test.txt # git checkout實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」。
最簡單的流程:spa
1. git clone https//... 2. 編輯要該的內容 3. git add 文件名 4. git commit -m 'comment' 5. git push https//...
建立dev分支,而後切換到dev分支 $ git checkout -b dev #命令加上-b參數表示建立並切換
git branch命令查看當前分支: $ git branch * dev master git branch命令會列出全部分支,當前分支前面會標一個*號。 查看分支:git branch 建立分支:git branch <name> 切換分支:git checkout <name> git checkout master 建立+切換分支:git checkout -b <name> 合併某分支到當前分支:git merge <name> 刪除分支:git branch -d <name>
分支使用步驟:設計
1.git checkout -b dev 建立分支 2.在分支上修改文件 3.git add readme.txt 4.git commit -m 'modify readme' 5.git checkout master 切換回master分支 6.git merge dev 合併分支 7.git branch -d dev 刪除分支 -D 大寫的D爲強行刪除 8.git branch 查看分支
當不用fast forword 模式合併時,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。
此時merge步驟版本控制
1.git cheakout -b dev 2.修改文件 3.git add readme.txt 4.git commit -m 'modify readme' 5.git checkout master 6.git merge --no-ff -m "merge with no-ff" dev (--no-ff 非快速模式,由於本次合併要建立一個新的commit,因此加上-m參數,把commit描述寫進去。) 7.git branch -d dev 8.git branch 合併分支時,加上--no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併,而fast forward合併就看不出來曾經作過合併。
Git還提供了一個stash功能,能夠把當前工做現場「儲藏」起來,等之後恢復現場後繼續工做git stash
日誌
修復好bug後,用git stash pop
,恢復的同時把stash內容也刪了code
git push origin master git push origin dev
$ git tag v0.9 6224937 (6224937爲版本號)blog
1. git remote add upstream https//.. 2. git fetch upstream 3. git rebase upstream/master #將全部更新推到本身的遠端repo