2017-05-26 94 views
4

想象一下下面的場景:如何「反轉」以前恢復的提交?

不應該被合併到集成分支的代碼需要被還原。但是,您不能重置,因爲自那以後發生了其他提交。此外,您可能希望在稍後重新應用該提交。

使用git revert可以很容易地應用反向提交。但是,當我們想要提交更改時(例如從功能分支),會發生什麼?你是否重新合併分支?這是否會起作用,因爲技術上代碼已經合併了?

當你終於準備接受合併時,你會做什麼?

回答

6

只需恢復恢復提交。

git revert HASH_OF_REVERT_COMMIT 
+0

這實際上是否有效?大聲笑。如果是這樣,那麼簡單。 –

0

如果我正確理解您的方案,您想恢復合併到分支的分支。


在這種情況下,例如,

git <your_branch> merged to master, pushed to origin/master. 

要恢復提交你推到原點什麼。

還原合併提交/單提交。

這將恢復單個提交併還用於恢復合併提交。

實施例:

git revert -m 1 <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 0 insertions(+), 12 deletions(-) 

GIT中復歸將介紹新的提交。您需要提交更改並將其推送到原點/主控或相應的原點/分支。

還原的還原

如果你決定重新合併的東西,它的迴歸是固定的?

例子:

git revert <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 12 insertions(+), 0 deletions(-) 

這樣做後,你固定推出的迴歸,這是在分支,前恢復了。稍後,您可以將該分支合併到起源中

+0

更詳細的解釋。我們有一個開發分支,它具有來自功能分支的所有合併更改。我們希望發佈一個版本,但其中一些提交者有決心要麼有問題,要麼只是不想發佈。顯然,我們可以選擇我們想要的提交,但是我不喜歡那樣,因爲它沒有出現在歷史圖中,所以另一種選擇是將開發與發佈合併,並且還原我們不想要的提交。現在,後來我們想要發佈這些提交。 –

+0

所以也許,是的,它就像恢復恢復提交一樣簡單。 –

+0

那麼,如果你想從開發分支發佈,在這種情況下,如果你想恢復15次提交呢?在那種情況下,它有點乏味。但是,回覆會在分支中添加一個額外的提交。也許,您可以嘗試將特定的提交合併到您的發佈分支,但是當您執行還原時,這將具有相同的工作量。直截了當的方式是恢復你的情況下的恢復提交,如果它不是更多的提交。 – LethalProgrammer