我只是做了一些愚蠢的事情。在我fooclient項目,我只是做:如何從無關項目中撤消git pull?
git remote add official https://github.com/fooserver
git pull official master
換句話說,我把一個完全不同的代碼庫(服務器,而不是客戶端)到我的工作目錄。毫不奇怪,合併衝突並不多(文件名畢竟是完全不同的)。同樣毫不奇怪的是,Git完全沒有提醒我,回購沒有一個共同的祖先。
在這種特定情況下,我能夠通過這樣做來恢復:
cp file-i-worked-on.js ~
git reset --hard HEAD # to discard broken merge conflicts
git checkout a12345 # where a12345 is the latest head of fooclient that I had checked out
cp ~/file-i-worked-on.js .
但是這將是更普遍的策略是什麼?
啊 - 這聽起來像是正確的答案。因此,HEAD @ {...}可讓您跟蹤HEAD所指向的更改。因此,你的命令轉化爲「你知道HEAD在我們搞砸之前指出了什麼?讓我們回到那裏......」 - 聽起來像是一個非常有用的工具。 – 2012-03-12 03:08:41
@SteveBennett是!這是非常有用的,因爲它使撤銷意外命令比試圖回溯你所做的更容易。可悲的是,它不是Git非常有名的功能。 – 2012-03-12 03:10:33