首先,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
完成.喜欢从未发生过.
我无法从你的问题中完全理解你的历史,但总的来说,如果你进行两次合并(一次拉动是一次合并),那么删除其中一个就完全是直截了当的.
- 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
.