分支
顯示分支一覽表
git branch
*表示當前我們所處的分支
創建&切換分支
git checkout -b
- 切換到feature-A分支,並進行提交
git checkout -b feature-A
該語句等同於如下兩條命令:
1.git branch feature-A
2.git checkout feature-A
在分支feature-A中修改文件,採用如下的方式,將會添加修改到feature-A分支中,而不會影響master分支:
git add + 文件
git commit -m “Add feature-A”
(注意:如果不提交修改,直接切換到master分支,將會把修改同步到master中) - 切換回主分支
git checkout master - 切回到上一個分支
git checkout -
特性分支
(特性分支,集中實現單一特性(主題),除此之外不進行任何作業的分支)
主幹分支
通常將master分支作爲主幹分支,主幹分支中並沒有開發到一半的代碼,可隨時供人查看。擁有多個版本時,主幹分支也有多個。
合併分支
git merge
首先切換到主幹分支
git checkout master
合併分支,加上–on-ff參數在歷史記錄中明確記錄下本次分支合併
保存並退出後,feature-A中的內容就保存到master中了
以圖表形式查看分支
git log --graph
更改提交的操作
回溯歷史版本
git reset
- 回溯到feature-A分支前
要讓倉庫的HEAD(指向當前分支中最新一次提交的指針)、暫存區、當前工作樹回溯到指定狀態,使用:
git reset --hard + 目標時間點的哈希值 - 創建fix-B特性分支
git checkout -b fix-B
- 推進至feature-A分支合併後的狀態
git reflog -> 查看當前倉庫的操作日誌。
git log 只能查看以當前狀態爲終點的歷史日誌
git reset --hard + 指定時間節點的哈希值
消除衝突
- 合併fix-B
feature-Af分支的更改與fix-B分支的更改發生了衝突。 - 查看並解決衝突部分
=======之上是當前HEAD的內容,下面是要合入的內容
處理衝突
- 提交衝突解決之後的內容
git add 與 git commit
更改提交信息
git commit --amend ,修改上一條提交信息
壓縮歷史
git rebase -i
- 創建feature-c分支
git checkout -b “faeture-c”
git commit -am “修改信息”(一次性完成add和commit) - 修正拼寫錯誤
在文件中修改拼寫錯誤之後,再次git commit -am “修改信息” - 更改歷史
git rebase -i HEAD~2
將Fix typo的歷史記錄壓縮到Add feature-c的歷史記錄中,將左側的pick部分刪除,改寫爲fixup。
- 合併至master 分支
git checkout master
git merge --no-ff feature-c