章節 34 重新定義參考基準

學習目標

好了,我們回到第一次合併前的狀態了,我們想把 master 的修改拿到 greet 分支。

這次我們將用重新定義參考基準命令代替合併命令,來取得 master 分支的修改。

執行:

git checkout greet
git rebase master
git hist

輸出:

$ go greet
Switched to branch 'greet'
$
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added Greeter class
Applying: hello uses Greeter
Applying: updated Rakefile
$
$ git hist
* e1399d1 2012-03-06 | Updated Rakefile (HEAD, greet) [Jim Weirich]
* 183c6ad 2012-03-06 | Hello uses Greeter [Jim Weirich]
* 297678c 2012-03-06 | Added greeter class [Jim Weirich]
* 3ce0095 2012-03-06 | Added README (master) [Jim Weirich]
* 76ba0a7 2012-03-06 | Added a Rakefile. [Jim Weirich]
* b8f15c3 2012-03-06 | Moved hello.rb to lib [Jim Weirich]
* 9c78ad8 2012-03-06 | Add an author/email comment [Jim Weirich]
* 4054321 2012-03-06 | Added a comment (v1) [Jim Weirich]
* 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich]
* 3053491 2012-03-06 | Using ARGV [Jim Weirich]
* 3cbf83b 2012-03-06 | First Commit [Jim Weirich]

合併與重新定義參考基準的比較 01

重新定義參考基準的結果與合併非常類似。 greet 分支現在包含了它自己所有的修改,以及 master 分支的所有修改。 然而,送交樹卻完全不同。 greet 分支的送交樹已經被改寫了,master 分支成為了送交記錄的一部份。 這讓送交鏈更連續且可讀性更好。

什麼時候需要重新定義參考基準,什麼時候需要合併? 02

別重新定義參考基準 …

  1. 如果分支是公開的,且與他人共享。 改寫公開分享的分支會讓團隊的其他成員抓狂。
  2. 當分支的送交記錄的精確度是很重要的(因為重新定義參考基準會改寫送交記錄)。

鑒於以上指導方針,我使用重新定義參考基準於生命週期短暫的本機分支,而取得公開檔案庫的分支時則使用合併。

目錄