[英]pull instead of fetch - accidentally merged remote master into local branch
我只是做了git pull
而不是git fetch
。 我在一個本地分支機構,我不想與origin/master
合並。 而且,我有一些不明朗的變化。
現在我的暫存區域充滿了來自origin/master
的變化我想恢復,但是如果我取消它們,它們將與我未經分級的未更改的變化混合。
我該如何解決這種情況?
我假設整個更改的混亂是由於您的合並沖突。 我建議做的是。
git stash
您未提交的更改,以便我們不會丟失它們。 git log -3
,這將顯示您的合並提交以及之前的2次提交。 在合並提交中,您將看到2 SHAS。 一個是origin / master的最新提交,另一個是您的分支上的最后一次提交。 git reset --hard <SHA of YOUR last commit>
這將在你合並之前將你的分支重置為你去掉你從master中引入的所有提交/更改。 git stash pop
可以將您未提交的更改恢復到您的分支。 由於您的更改都在您的本地分支上,因此您可以修改歷史記錄以使狀態恢復到您想要的狀態而不會出現任何問題。 如果您確實需要任何暫存文件,請執行git reset -- <filenames>
以取消它們,然后按照上述步驟操作。
我想你可能想要git merge --abort
。
從文檔:
中止當前的沖突解決過程,並嘗試重建合並前的狀態。
如果在合並開始時存在未提交的工作樹更改,則git merge --abort在某些情況下將無法重建這些更改。 因此,建議在運行git merge之前始終提交或存儲您的更改。
我有TortoiseGit來管理我的git repos,它非常方便。 這些是我要做的步驟(使用TortoiseGit) - 首先存儲您的更改(TortoiseGit-> Stash)並正確命名,因此所有未提交的更改都會保存到存儲中
第二,(右鍵單擊你的repo-> TortoiseGit)“顯示日志”,這將顯示所有更改日志,(假設你知道你在合並之前的位置 - 也許你已經完成了一些提交)尋找它,並且右鍵單擊該更改日志,在下一節中說“重置為此提交”,選擇“硬重置”,這將從所選提交中刪除所有提交到頂部,並刪除更改。
重新應用您的存儲(右鍵單擊,TortoiseGit-> Stash),然后應用您之前保存的存儲
您可以恢復合並步驟,它將附加一個新的提交,撤消合並中的所有文件更改
$ git revert <merge_commit_hash>
如果你執行一個$ git log --graph --oneline
你將不得不尋找類似於“合並分支”foo“of”remote_x“blah blah”的提交“
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.