我創建了一個場景的簡化,其中我試圖理解為什么它會這樣作業。
這是提交的時間表:

起初,我創建了一個名為dev 的新分支feature——兩者都有一個提交:
讓我們看看dev:

然后添加另一行并提交:

然后另一個:

還有一個:

然后我切換到feature分支并添加了“錯誤代碼”:

然后我切換回dev并合并feature到dev:

所以現在我決定恢復合并提交:
git revert -m 1 2c618a9
(父 1 是 dev 分支)并且恢復確實按預期作業。
但是,當我嘗試(僅用于測驗目的)將feature分支重新合并到 時dev,似乎什么也沒發生:而且我沒有再次看到錯誤的提交:

題
As you can see, the bad commits are not entered again. Why is that ? What if I wanted to merge it again?
uj5u.com熱心網友回復:
git merge 首先看看提交是如何相互鏈接的:
如果您查看 repo 的歷史圖表(螢屏截圖左側的藍點和紅點),您可以看到git revertwill的結果:
- 保留現有歷史(包括以前的
git merge feature) - 在此之上添加一個新的提交
所以下次你嘗試運行時git merge feature,git會說“哦,但是feature已經合并到了dev”,并且什么也不做。
“重新合并”功能的一種可能性是用于git cherry-pick選擇要重播的提交dev:
git cherry-pick <bad commit>
# if there were several commits to 're merge' :
git cherry-pick <commit1> <commit2> ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346808.html
標籤:git
