如何从不相关的项目中撤消git pull?

时间:2012-03-12 01:09:48

标签: git git-pull

我做了一件蠢事。在我的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 .

但是更一般的策略是什么?

4 个答案:

答案 0 :(得分:4)

这会将您重置为最后一位州长:

git reset --hard HEAD@{1}

由于reflog,这是可能的。运行git reflog将显示reflog,并允许您验证您是否正在重置为正确的状态。

答案 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或其他任何东西中得到的东西。现在将你得到的东西合并或重新组合到你想去的地方。