具體問(wèn)題是什么?
image.png
解決方法
- 第一步:把錯(cuò)誤的commit遴選到正確的分支(copy)
- 第二步:因?yàn)殄噙x的背后是copy谣拣,所以還需要?jiǎng)h除掉錯(cuò)誤分支上的commit;
操作步驟:
- 切換到feature_a分支
-
選中提交錯(cuò)的commit節(jié)點(diǎn)截粗,右鍵進(jìn)行遴選即可(如果不修改commit信息的話可以在后面的提示中直接同意自動(dòng)commit)
image.png -
操作結(jié)果如下:
image.png - 因?yàn)閏ommit是copy的巨税,所以我們還需要把feature_b分支中的那個(gè)commit刪除掉
- 切換到feature_b分支
-
選中要?jiǎng)h除的commit節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),執(zhí)行「重置」操縱培他,如下圖:
image.png -
在彈出的框中鹃两,我們這樣選擇先
image.png -
我們可以看到遗座,雖然commit被刪除了,但其實(shí)改動(dòng)還在俊扳,我們只需要丟失本地改動(dòng)就好了
image.png -
剛才其實(shí)還有其他選項(xiàng)途蒋,比如選擇「強(qiáng)行合并」,那么那個(gè)commit直接就被丟棄了馋记,不會(huì)像剛才那樣号坡,產(chǎn)生Uncommitted changes,還需要手動(dòng)丟棄改動(dòng)
image.png - 其實(shí)還有一種選項(xiàng)抗果,叫「軟合并」筋帖,這種介于「混合合并」和「強(qiáng)行合并」中間,即:改動(dòng)還在冤馏,但你改動(dòng)被
git add .
了
image.png
「軟合并」效果如下:
image.png - 以上操作(各種reset)日麸,如果一開(kāi)始已經(jīng)push到remote了,還需要
git push --force
-
其實(shí)還有一種操作逮光,叫做「提交回滾」代箭,通過(guò)revert來(lái)實(shí)現(xiàn)的
image.png -
操作結(jié)果如下,是通過(guò)一次新的commit來(lái)把錯(cuò)誤的commit抹掉
image.png