撤消糟糕的拉力

Mal*_*lio 46 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
Run Code Online (Sandbox Code Playgroud)

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

所以现在我好起来了吧?我应该只是火炬我的存储库,再次克隆遥控器,手动重新应用所有未按下的更改,然后将它归结为Git吸吮或者是否有一些我可以背诵的咒语会让一切变得更好?如果我牺牲一只山羊会有帮助吗?

jtd*_*ubs 40

使用git reflog,看看你的头指着你搞砸了之前.

你应该看到类似的东西:

48ab8d HEAD@{0}: pull: Fast-forward
a34bda HEAD@{5}: commit: my last commit message
Run Code Online (Sandbox Code Playgroud)

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

git reset --hard a34bda

完成.喜欢从未发生过.

  • 重新拷?听起来很吓人. (8认同)

Cas*_*bel 6

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

- o - o - o - A - M1 - M2 (master)
                 /    /
      - o - o - o    /   (origin/lounge)
                    /
             - o - o (origin/master)
Run Code Online (Sandbox Code Playgroud)

最明显的方式:

 git checkout master
 git reset --hard A
 git merge origin/master
Run Code Online (Sandbox Code Playgroud)

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