Git的合并左HEAD标记在我的文件(Git merge left HEAD marks in my

2019-10-29 16:38发布

我试图合并在使用Git命令行文件,当出现错误消息告诉我的合并被中止。

我认为这是它的结束,但后来我意识到有我的文件gitmarks。 像这样:

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 <<<<<<< HEAD
  • 的改变的代码行
  • 等于符号的字符串( =======
  • 代码的新版本
  • 开始大于标志和分支的名字另一条线( >>>>>>> gh-pages

更糟糕的是,该文件的内容不再是为了。 有谁知道我是如何得到这些文件恢复正常,我在GH-分支上的修改合并到主分支?

Answer 1:

这些都是冲突标记 。 你仍然在合并的过程中,但有迹象表明混帐不能自动合并某些部分。 您将需要手动编辑的部分你想要什么他们是,然后提交结果。


例如,你的具体情况,你可能希望解决它像这样(注 - 右侧的箭头/文本只是我的笔记,不是你会输入到文件):

integer = 
<<<<<<< HEAD                                  <-+ remove the bits here
    digits:[0-9]+                               |
        { return digits.join(""); }             |
=======                                       <-+
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
>>>>>>> gh-pages                              <-- and this

因而你将文件另存为...

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


Answer 2:

绝对有“git的状态”开始看到你有什么。 如果中止合并(或有合并中止),你已经有了在工作目录中有冲突的文件,然后出事了。 Git的状态会告诉你,你在哪里。 在此之后,你有多种选择。 您应该解决的合并提交或者通过手,它可以是具有挑战性的,或者使用的工具为:

git mergetool

如果你的文件被列为需要合并的合并工具将工作。

您还可以执行的一个:

git checkout --ours -- /path/to/conflicted-file       # this is probably the one you want
git checkout --theirs -- /path/to/conflicted-file

你可以看到使用不同的版本:1:文件名语法。 见这里的一个解释。 但上述所有假设“git的状态”显示文件为需要合并。

最后,你总是有选择:

git reset --hard   # sounds like --hard is what you need but check other options


Answer 3:

所有的答案是正确的,但如果你想的autoremove所有冲突的标记和要自动切换的文件,以保持头,然后就可以像创建自己的bash脚本: -

示例脚本:

# vim /usr/sbin/solve.git

(追加关注)

#!/bin/bash
for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .)
do
sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f
sed -i -e '/^>>>>>>> /d' $f
echo "$f Fixed"
done
git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify

# chmod 755 /usr/sbin/solve.git

&只是运行在你的GIT回购/路径来解决:

$ cd <path_to_repo>
$ solve.git

注意: - 上面提到的文件扩展名是PHP,CSS,JS,HTML,SVG和TXT。



Answer 4:

在凌动我有问题,一些文件没有被解析合并冲突保存到驱动器,所以我不得不手动点击“保存”。 我花了相当长的一段时间来弄清楚。



Answer 5:

我来自这个问题 。 而我想合并一半的一些自动化的方法合并,而不是手动编辑文件( 在其他的答案,这我不是很舒服做建议 )文件。 因此,这里是我最后通过的NetBeans做,但可以通过命令行来实现了。

现在,要记住,这只是工作,如果在后立即merge->add->commit ,你意识到你搞砸了,并想通过进程重新进入。

第1步:恢复先前的承诺。

git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e

第2步:重新尝试合并分支

git merge --ff origin/feature/YOUR-Branch_here

此时,您应与合并窗口,如果您使用的是图形用户界面提示。 然后你可以正常进行。



文章来源: Git merge left HEAD marks in my files