我認爲你要找的是git cherry
。這會從提交體生成sha1值,而不是使用git commit id來比較提交。這使得它獨立於提交順序。您可以使用它來查找可能值得從一個分支添加到另一個分支的提交。
來自msysGit開發樹的一個例子可能會有所幫助。我們有一箇舊的分支'work/symlink',它可能已經被合併到'devel'分支。所以:
[email protected] /git (devel)
$ git cherry devel origin/work/symlink
+ 7fe3fde1d9b93472faeedb75bfd930825a5abe06
- aebecb0d31e4a546cf4d21d32e82cc852b6057bb
+ 1b467d086fd6601cd2feb34d59baf1e804f70acb
+ 3e735a0bfda6b91ae7cbb20c2c89818405c5bea9
+ d4db723c482ba4d2fd7539060834d231c35cdf53
此說,有5次提交的利益(我們也可以從日誌輸出工作了):
$ git log --oneline devel..origin/work/symlink
d4db723 Place __stdcall between return value and function name
3e735a0 mingw.c: Use the O_BINARY flag to open files
1b467d0 Test for WIN32 instead of __MINGW32_
aebecb0 Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++
7fe3fde Support UTF8<=>Unicode filename mapping
這就是出現在「工作/符號鏈接」的提交,而不是'devel的'。 git cherry的輸出表明aebecb0提交已經應用於'devel'(來自前導減號),但其他的可能值得研究。我們可以檢查這個承諾只出現在工作的分支:
$ git branch --all --contains aebecb0
remotes/origin/work/symlink
,但我們也可以發現提交ID它得到了通過搜索使用git log --crep
提交信息看,這其中合併到devel的分支真的被選入開發。
因此,我認爲你不能通過'mybranch'中的'git rebase -i master'獲得你想要的,而不是選擇「common」提交? – Romain
我的主要問題是*識別*「常見」提交。理想情況下,這應該主要是自動發生的,這樣可以減少丟失有用東西的風險。 – maaartinus