撤消糟糕的拉力

时间:2010-11-25 02:05:00

标签: git

首先,Git很糟糕。我知道,我知道,它应该是自切片面包以来最好的东西,但它很糟糕。这就像试图用电锯剃须:一个轻微的错误,到处都是鲜血和牙齿。也许,如果我能真正区分头部,参考,提交,分支,干,gnargel和whizpoo,其中一些可能会更容易,但对于只有10年的普通凡人SVN,Perforce和RCS的体验,看起来都像是一个相当暴躁的黑魔法。

现在由于某种原因,git pull从未为我工作过。到目前为止,我收到的10行错误消息与“错误”一词一样有用。谷歌搜索错误信息产生了大量的建议,这些建议只有共同点,即他们没有任何明显的影响。但这不是今天的问题:我已经习惯输入git pull origin branch

今天,我在两个分店之间来回徘徊,“主人”和“休息室”,此刻我在主分店。我想从远程存储库获取最新的更改到本地更改,但我输入错误。我写了git pull origin master而不是写git pull origin lounge,然后不假思索地输入了正确的命令。

没有证据表明第一次(坏)拉入日志,只有两次来自主人的合并:

commit 0c6be9569bab0581244ea8603bf2edfee82cdd7b
Merge: 43fdec5... db09f0d...
Author: Malvolio <info@xcompanyx.com>
Date:   Wed Nov 24 20:38:58 2010 -0500

Merge branch 'master' of github.com:xcompanyx/xRepositoryX

commit db09f0d79d744d6a354142041b47ff5d748999f3
Merge: 81b6c3d... fc73e25...
Author: Malvolio <info@xcompanyx.com>
Date:   Wed Nov 24 17:38:16 2010 -0800

Merge branch 'master' of github.com:xcompanyx/xRepositoryX

commit 81b6c3d04b7c464f8750a56282635526a5ef83a1
Author: Michael <info@xcompanyx.com>
Date:   Wed Nov 24 17:38:07 2010 -0800
    the last commit I did

但是在休息室分支中新创建的文件存放在我的存储库中。

所以现在我很震惊吧?我应该只是火炬我的存储库,再次克隆遥控器,手动重新应用所有未按下的更改,并将其粉笔到Git吸吮或是否有一些我可以背诵的咒语会让一切变得更好?如果我牺牲一只山羊会有帮助吗?

2 个答案:

答案 0 :(得分:40)

使用git reflog查看HEAD在搞砸之前指出的内容。

您应该看到类似的内容:

48ab8d HEAD@{0}: pull: Fast-forward
a34bda HEAD@{5}: commit: my last commit message

现在,在糟糕的拉动之前将主分支指向提交:

git reset --hard a34bda

完成。就像从未发生过一样。

答案 1 :(得分:6)

我无法从你的问题中完全理解你的历史,但总的来说,如果你进行两次合并(一次拉动是一次合并),那么删除其中一个就完全可以直接了。

- o - o - o - A - M1 - M2 (master)
                 /    /
      - o - o - o    /   (origin/lounge)
                    /
             - o - o (origin/master)

最明显的方式:

 git checkout master
 git reset --hard A
 git merge origin/master

这将使用您的本地缓存版本的origin的master,如果您想要合并现在的任何内容,请使用git pull origin master