我不小心提交到 branch dev,而不是feature-branch,并推送到遠程。基于git undo commit 在受保護分支上的建議?,我采取了以下步驟來撤消提交dev并將其提交給feature-branch
上dev,在本地撤消提交并將其存盤起來,以便我以后可以將其提交到feature-branch:
git reset --soft HEAD~1git restore --staged .git stashgit pullgit revert SHA-1git commit -m "reverting commit made to wrong branch"git push
上feature-branch:
git stash popgit add .,git commit -m "making commit in the right place"
偉大的。在這一點上,dev回到了我在那里錯誤地提交之前的位置,并feature-branch進行了新的更改。然后我做了更多的作業并添加了更多的提交到feature-branch.
從feature-branchto創建拉取請求dev并將其合并后,似乎已還原的提交不存在于dev.
這里發生了什么?
現在我將只創建一個新分支并手動重寫提交,但我不明白為什么這一系列事件讓我在我的 IDE(vscode 和 gitlens)中看到了一個差異,但是 github 告訴我沒有差異?
uj5u.com熱心網友回復:
tl; dr:看來您針對同一問題嘗試了兩種不同的解決方案,但最終沒有按照您的想法行事。
如果您不小心向 提交了某些內容dev并想修復它,您有兩種(類別的)方法來處理它:
- 您可以
reset回傳上一次提交,實質上是洗掉最近的提交。 - 你可以
revert提交。
目前尚不清楚您是否已經推出了dev錯誤的提交,但根據描述,我懷疑您可能沒有。在這種情況下,reset將是最好的方法。如果您已經推送了錯誤的提交并且其他人可能已經在使用它,那么revert最好。顯然你試圖做到這兩點;看起來您首先進行了重置,然后進行了還原。
第一次重置“洗掉”了提交,然后嘗試恢復不存在的東西是行不通的,所以你會留在你開始的地方。(您還記得在您嘗試時看到過有關此效果的任何訊息嗎?)
請注意,如果您之前推出dev并決定恢復是要走的路,在重置提交后,如果git push沒有強制推送,您將無法做到。
旁注,要將該提交移至feature-branch,您可以簡單地cherry-pick通過其上的哈希 ID 提交該提交dev,而不是嘗試進行隱藏它的額外作業,我懷疑這是導致您走上這條道路的開始。
提示:我強烈建議您經常使用git log或。考慮使用顯示分支歷史記錄的 UI,并在您每次提交后重繪 它,這樣您就可以準確地看到您在做什么,并且錯誤會變得明顯。git log --graph
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/392127.html
