git筆記(廖雪峯版本)

git diff #是工做區(work dict)和暫存區(stage)的比較
git diff --cached #是暫存區(stage)和分支(master)的比較
clipboard.pnggit

Git比其餘版本控制系統設計得優秀,由於Git跟蹤並管理的是修改,而非文件。緩存

$ git add readme.txt
$ git commit -m "append GPL"  #-m爲添加評論

查看日誌 git log

$ git log --pretty=oneline

回退到上一個版本 git reset

$ git reset --hard 3628164

關了電腦,想回到上一個版本

Git提供了一個命令git reflog用來記錄你的每一次命令:app

$ git reflog

工做區與緩存區的區別見圖
clipboard.pngfetch

輸出文件內容

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

如何讓fork來的repo保持更新

1. git remote add upstream https//..
2. git fetch upstream
3. git rebase upstream/master  #將全部更新推到本身的遠端repo
相關文章
相關標籤/搜索