2015-02-09 76 views
0

我的應用程序需要每天持續合併多個分支,有時需要每天多次發佈。我喜歡rebase能夠幫助我從主分支中分離出僅在我的特性分支中發生變化的代碼。然而,當我在處理10或20個衝突時,重新鑲嵌經常變成噩夢,因爲變化被重放。每個衝突都有可能被錯誤解決,我想避免它。有沒有辦法做一個「快速」rebase,它不會實際回放從rebased到分支的更改,而只是使用該分支的最新版本,並修改功能分支,使其僅包含與最新重新啓動分支機構?即它不關心歷史,它只是做一個比較,並在每個分支的最新版本上使用補丁來重新分配?合併,rebase或其他替代?

回答

0

你在找什麼是壁球你可以做與git merge --squashrebase is a little more complicated合併。但是,如果您只是查看代碼並希望查看功能分支中的更改(而不是分支和主控之間的差異),則可以使用git log master..branch查看分支中的所有更改,並且可以使用git diff master...branch (注意三點)以查看分支中發生了什麼變化。

git diff [--options] <commit>...<commit> [--] [<path>...] 
    This form is to view the changes on the branch containing and up to the second 
    <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is 
    equivalent to "git diff $(git-merge-base A B) B". You can omit any one of 
    <commit>, which has the same effect as using HEAD instead. 

關於三個點的詳細信息,請參閱the gitrevisions man pageRevision Selection in Pro Git

+0

這就是我現在正在做的,git rebase -i。這是一個非常頭疼的問題,因爲它可以回放所有的變化。我不想那樣。通常情況下,同一段代碼被反覆編輯和重新編譯時,我必須一遍又一遍地解決衝突,當我所關心的是主站的最終版本以及它如何與我的分支進行比較時。當我合併時,這是一個一步的過程。我只需要解決一次衝突。我想要一個很容易的rebase。 我不知道那個diff ...命令。這可能有很大幫助。謝謝。 – 2015-02-10 15:33:53