1. 程式人生 > >Git 進階操作(一)

Git 進階操作(一)

topic 參考 origin hot parent ref selection 本地 vision

1. 獲取提交信息(commit)

  • git show 1c002d(哈希值的前幾位): 獲取提交的信息;
  • git show HEAD^: 顯示HEAD的上級(parent)提交的信息;
  • git show HEAD~: 同上;
  • git show HEAD~3: the first parent of the first parent of the first parent;
// experiment 分支上,還沒有合並到master分支上的內容
$ git log master..experiment
D
C

// 變體:
// git log origin/master..HEAD: 本地分支還未合並到遠程分支的內容;

技術分享圖片

// 顯示每個分支獨有的部分
git log master...experiment

// 升級版
git log --left-right master...experiment

2. 更改歷史記錄(Rewriting History)

  • git commit --amend: 更改最後一次提交的歷史記錄;

3. 重置(Reset)

  • 三顆"樹"
    • 此處"樹"指文件的集合;
    • "HEAD": Last commit snapshot, next parent;
    • "Index": Proposed next commit snapshot;
    • "Working Directory": Sandbox;

技術分享圖片

3.1 重置情況一

  • git reset 9e5e6a4git reset --soft HEAD~

技術分享圖片

3.2 重置情況二(默認)

  • git reset --mixed HEAD~git reset HEAD~

技術分享圖片

3.3 重置情況三

  • git reset --hard HEAD~

技術分享圖片

4. 合並分支進階

  • git checkout --conflict=diff3 hello.rb
  • git config --global merge.conflictstyle diff3: 在配置文件中設置;

技術分享圖片


  • git log --oneline --left-right HEAD...MERGE_HEAD: 查看合並時,每個分支包含的操作日誌;

技術分享圖片


  • git log --oneline --left-right --merge: 查看含有沖突的日誌;

技術分享圖片


4.1 復原分支

  • git reset --hard HEAD~: 將合並的分支復原(針對本地倉庫)

技術分享圖片

技術分享圖片


  • git revert -m 1 HEAD: 保存主分支(C6)的內容,將合並的分支(C4)內容剔除

技術分享圖片

  • git revert ^M: 將剔除的分支,重新合並到主分支;
  • git merge topic

技術分享圖片

參考資料:

  • Pro Git

Git 進階操作(一)