Git合并我文件中的左头标记

Git合并我文件中的左头标记

我试图使用Git合并命令行中的一个文件,这时出现了一条错误消息,告诉我合并被中止。

我以为这就结束了,但后来我意识到我的文件里有手印。就像这样:

start =
    expression

validchar = 
    [0-9a-zA-Z_?!+\-=@#$%^&*/.]

integer = 
<<<<<<< HEAD
    digits:[0-9]+
        { return digits.join(""); }
=======
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
>>>>>>> gh-pages

这些文件不是由我编辑的,而是显示了插入以下内容的行:

  • 头后少于征兆(

    <<<<<<< HEAD)

  • 更改代码行
  • 一串相等的符号(

    =======)

  • 新版本的代码
  • 以大于符号和分支的名称开头的另一行(

    >>>>>>> gh-pages)

更糟糕的是,文件内容不再有序。有谁知道我如何使这些文件恢复正常,以及我在gh分支中所做的更改合并到主分支中吗?


达令说
浏览 661回答 3
3回答

慕容森

那些是冲突标记..您仍然在合并过程中,但是有一些部分Git无法自动合并。你会需要手工编辑这些部件你想要他们成为什么样的人,然后把结果交出来。例如,在您的特定情况下,您可能希望这样解决它(注意-右边的箭头/文本只是我的注释,而不是您在文件中键入的内容):integer&nbsp;=&nbsp; <<<<<<<&nbsp;HEAD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<-+&nbsp;remove&nbsp;the&nbsp;bits&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;digits:[0-9]+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;return&nbsp;digits.join("");&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| =======&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<-+ &nbsp;&nbsp;&nbsp;&nbsp;sign:"-"*&nbsp;digits:[0-9]+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;return&nbsp;sign&nbsp;+&nbsp;digits.join("");&nbsp;} >>>>>>>&nbsp;gh-pages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<--&nbsp;and&nbsp;this这样你就可以把文件保存成.。integer&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;sign:"-"*&nbsp;digits:[0-9]+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;return&nbsp;sign&nbsp;+&nbsp;digits.join("");&nbsp;}

暮色呼如

绝对从‘git状态’开始,看看你得到了什么。如果您中止了合并(或终止了合并),并且在工作目录中有冲突的文件,那么有些地方出错了。吉特状态会告诉你在哪。在那之后,你有很多选择。您应该手动解析合并提交,这可能具有挑战性,或者将工具用作:git&nbsp;mergetool如果您的文件被列为需要合并,则合并工具将工作。您还可以执行下列操作之一:git&nbsp;checkout&nbsp;--ours&nbsp;--&nbsp;/path/to/conflicted-file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;this&nbsp;is&nbsp;probably&nbsp;the&nbsp;one&nbsp;you&nbsp;want git&nbsp;checkout&nbsp;--theirs&nbsp;--&nbsp;/path/to/conflicted-file您可以使用:1:filename语法看到不同的版本。看见这里解释一下。但是以上所有的假设都假设‘git状态’显示文件需要合并。最后,您始终可以选择:git&nbsp;reset&nbsp;--hard&nbsp;&nbsp;&nbsp;#&nbsp;sounds&nbsp;like&nbsp;--hard&nbsp;is&nbsp;what&nbsp;you&nbsp;need&nbsp;but&nbsp;check&nbsp;other&nbsp;options

紫衣仙女

所有答案都是正确的,但是如果您想自动删除所有冲突标记&想要自动更改文件以保持标题,那么您可以创建您自己的bash脚本,如:-示例脚本:# vim /usr/sbin/solve.git(附后)#!/bin/bash for&nbsp;f&nbsp;in&nbsp;$(grep&nbsp;-Rl&nbsp;'^>>>>>>>&nbsp;'&nbsp;--include="*.php"&nbsp;--include="*.css"&nbsp;--include="*.js"&nbsp;--include="*.html"&nbsp;--include="*.svg"&nbsp;--include="*.txt"&nbsp;.) do sed&nbsp;-i&nbsp;-e&nbsp;'/^=======/,/^>>>>>>>&nbsp;/d'&nbsp;-e&nbsp;'/^<<<<<<<&nbsp;/d'&nbsp;$f sed&nbsp;-i&nbsp;-e&nbsp;'/^>>>>>>>&nbsp;/d'&nbsp;$f echo&nbsp;"$f&nbsp;Fixed" done git&nbsp;add&nbsp;.&nbsp;;&nbsp;git&nbsp;commit&nbsp;-am&nbsp;"[+]&nbsp;Resolved&nbsp;on&nbsp;`date`&nbsp;from&nbsp;`hostname`&nbsp;by&nbsp;`whoami`"&nbsp;--no-verify# chmod 755 /usr/sbin/solve.git&只需在gitrepo/path中运行它就可以解决问题:$ cd <path_to_repo>$ solve.git注意:-上面提到的文件扩展名为php、css、js、html、svg&txt。
打开App,查看更多内容
随时随地看视频慕课网APP