我有两台笔记本电脑,每台都在主分公司工作。今天早上,我忘了在另一台笔记本电脑上工作之前推动对分支的更改。所以我有两个不同版本的代码。所以我从第二台笔记本电脑推出了代码,然后在第一台笔记本电脑上尝试将该版本合并到远程版本中。
我试图合并,但我想我搞砸了。我有以下代码:
<<<<<<< HEAD
.publicHome-input-neutral {
=======
.signin-input {
>>>>>>> fae264c582726a42c3d09f2ffbbe5b429a471598
line-height: 40px;
height: 40px;
font-size: 18px;
padding: 0px 16px;
border: 1px solid @color-instanty-blue;
border-radius: 6px;
background: #ffffff;
text-align: center;
width: 250px;
color: @color-text-dark;
}
<<<<<<< HEAD
=======
.signin-input.ng-invalid {
border-color: red;
}
你可以看到它仍然很混乱。我安装了p4merge并尝试通过git mergetool
启动它。我收到了No files need merging
的消息。
在我搞砸合并之前,可以恢复到早期阶段吗?或以某种方式解决这些错误合并的文件?
答案 0 :(得分:0)
听起来您在文件中使用git冲突符号添加了+已提交的更改。这本身并不是一个大问题(我们都已经完成了)。我有两个主要选择:
1)在文件中搜索“&lt;&lt;&lt;&lt;&lt;”,“====”,“&gt;&gt;&gt;&gt;”的模式并手动评估和修复每个冲突,然后只需提交这些更改。
2)在合并之前恢复到。为此,只需输入git log
,找到执行合并的提交,并将该提交的SHA复制到剪贴板,然后输入:
git revert -m 1 <your SHA here>
然后再次执行合并,但这次确保在输入git add
之前所有git冲突符号,因为此命令表明您已解决冲突。
PS。如果你想查看你将要恢复的提交,在实际执行恢复之前,只需输入git checkout <your SHA here>
并浏览一下即可。一旦您对自己想要的地方感到满意,请输入git checkout master
以回到原来的位置。
答案 1 :(得分:0)
您的文件最终位于暂存区域。确保使用
检查git ls-files --stage <file>
然后使用-m
中的checkout
选项将其重新添加为未合并的文件。
git checkout -m <file>
答案 2 :(得分:0)
你也可以
git difftool
它会一一为您提供文件,您可以手动解决。当自动合并失败或冲突太难解决时,它很有用。 但是你必须确保它设置如下,下面的例子是在mac中进行Beyond compare
git config --global diff.tool bc
git config --global difftool.prompt false
git config --global difftool.bc trustExitCode true
git config --global merge.tool bc
git config --global mergetool.bc trustExitCode true
答案 3 :(得分:-1)
在这里阅读全部内容:How to revert to old commit
您的相关部分是git reflog
,它可以让您回到修改HEAD的任何所需时间点。
git reflog
您也可以随时使用reflog
git reflog
将显示更新HEAD
的任何更改,并且检出所需的reflog条目会将HEAD
设置回此提交。
git reflog
git checkout HEAD@{...}
这会让你回到你想要的提交