2016-06-16 13 views
1

好的,這個有點複雜,而且很可能非常具體。讓我試着解釋一下。Git commit,然後從主設備重新綁定,然後對原始提交進行小的更改

可以說我把這個git倉庫放入我的本地驅動器。然後進行一些更改。由於這些更改有許多不同的文件,並針對不同的目標,所以提交更多。假設這些更改提交的散列值爲ab001 to ab005(五個提交)。然後我創建了一系列補丁併發送給社區進行審查。

同時,假設我意識到master repo已經改變退出了一點,所以我需要rebase。我這樣做,解決所有的衝突。現在這會導致另一次提交,比如說ab006

一切都很好。

但第二天,我收到了上一個補丁(其中一個提供了5個提交)的評論和建議。因此,我現在必須根據這些意見做出一些更改,併發送舊版補丁的v2(版本2)(即5次提交)。因此,我必須取消這5個提交的提交,進行更改並再次提交併創建另一個補丁(使用這5個提交)。

我該如何去做這件事,我不能不承認,因爲在HEAD有一個rebase提交。我對此很困惑。

+0

git文檔建議您應該在新提交中進行更改,而不是修改已有的提交。請參閱「從上游Rebase恢復」一節,https://git-scm.com/docs/git-rebase – declan

+0

@declan,True。但是對於每一個小改動和建議,我都不能發送增量提交。它看起來很sl and,審查員放鬆了對以前變化的把握(因爲它沒有被合併)。 – Haris

+0

當然,夠公平的。 – declan

回答

2

您可以從主人處「撤消」重設,然後修改提交ab001ab005

git log 

# commit ab005 
# Fifth commit on the topic branch 
# ... 
# 
# commit ab001 
# First commit on the topic branch 
# 
# commit xy999 
# Last commit on master before I started this new branch 

git reset --hard xy999 
git cherry-pick ab001 
... 
git cherry-pick ab005 

現在您的歷史很乾淨,您可以修改主題分支提交。如果有必要,您可以將重設數據重新添加到主數據庫中,但如果可能的話,我建議您等待直到此分支中的工作完成。

相關問題