我做了一件蠢事。在我的fooclient项目中,我刚刚做了:
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 .
但是更一般的策略是什么?
答案 0 :(得分:4)
答案 1 :(得分:0)
删除不需要的远程(git remote rm ...
)后,只需git reset --hard
到您希望当前分支开启的位置。
git reset --hard origin/master
如果您之前在master
,则会将您的master
重置为原始遥控器的主人所在的位置。就是这样!
答案 2 :(得分:0)
git stash
git reset --hard HEAD^
git stash apply
答案 3 :(得分:0)
从现在开始
git fetch
检查你在gitk或git log或其他任何东西中得到的东西。现在将你得到的东西合并或重新组合到你想去的地方。