[英]After a git rebase master mistakenly executed git pull instead of git push origin/your_branch -f
可能是由於缺乏睡眠而不是在git rebase master
之后執行強制推送,我執行了git pull
。 現在我的拉取請求被弄亂了,包括來自master的所有提交。 有什么建議可以還原嗎?
git reflog
已多次為我提供幫助。
此參考日志記錄對本地存儲庫/分支/參考的更新。
因此,在這種情況下,如果在拉動之前找到所需分支的起始提交,則可以將當前分支重置為該引用。 例如,重置為HEAD@{2}
git reset --hard HEAD@{2}
注意:使用--hard
之前,請務必確定您的操作
運行git pull
只是獲取,然后合並上游分支。 假設合並成功,並且您仍然將該分支檢出,則應使用以下方法解決此問題:
$ git reset @^1
這會將分支重置為第一個父級,該父級應該是經過重新設置的分支(第二個父級是該分支的舊上游版本的頭部。)您可以在進行重置之前進行驗證:
$ git log --graph @^1
要么
$ gitk @^1
如果這些看起來理智,則重置應執行此操作。 它不會觸摸工作樹中的文件,因此您可以查看是否導致任何令人驚訝的更改。 我懷疑不會有任何合並,因為就代碼而言,合並可能是無操作的操作(再次假設成功)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.