2015-07-02 20 views
2

比方說,我有以下的歷史在我混帳回購協議:混帳 - 得到一些非隨之而來的結果改變承諾

C (master) 
x (origin/master) 
B 
x 
A 
x 

A,B和C是承諾,我很感興趣,而X是其他一些更改(可能會超過1次提交)。我想知道提交A,B和C執行的結果更改是否忽略了其他提交之間所做的任何其他更改。

有沒有可能這樣做?

回答

2

您可以重訂這些變化來創建它們的一個承諾:

git rebase -i A^ // QWE^ means parent of QWE 

在交互reabse你可以改變提交的順序爲您的C,B,A是在上面。您也可以將B和A設置爲「壓扁」或「修復」,這樣這些提交將作爲一個提交顯示。

,如果你想看到犯+ B + C,你可以簡單地進行更改之後:

git log -p -1 A+B+C // -p means show diff, -1 means show just 1 commit 

的問題是,重訂期間,您可能需要做一些合併。

2

看來您想對A-B-C中的更改進行代碼審查。

我建議首先結賬C處於分離HEAD狀態,並進行rebase互動。

git checkout --detach C 
git rebase -i A^ 

底墊交互式編輯器會告訴你這樣的事情

pick A 
pick x 
pick B 
pick x 
pick C 

取出x線和壁球等提交。例如。

pick A 
squash B 
squash C 

底墊完成你的頭點提交後僅包含的A-B-C的變化。

可以使用

git show HEAD 

看到的變化,但請記住,你可能會得到,你必須解決衝突。這可能發生在例如提交C取決於您在刪除的x提交之一中引入的更改。對於提交'B'也是如此。