为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
达令说 2019-07-20 10:27:36
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分支中所做的更改合并到主分支中吗?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

那些是冲突标记..您仍然在合并过程中,但是有一些部分Git无法自动合并。你会需要手工编辑这些部件你想要他们成为什么样的人,然后把结果交出来。


例如,在您的特定情况下,您可能希望这样解决它(注意-右边的箭头/文本只是我的注释,而不是您在文件中键入的内容):

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(""); }


查看完整回答
反对 回复 2019-07-20
?
暮色呼如

TA贡献1853条经验 获得超9个赞

绝对从‘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:filename语法看到不同的版本。看见这里解释一下。但是以上所有的假设都假设‘git状态’显示文件需要合并。

最后,您始终可以选择:

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


查看完整回答
反对 回复 2019-07-20
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

所有答案都是正确的,但是如果您想自动删除所有冲突标记&想要自动更改文件以保持标题,那么您可以创建您自己的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

&只需在gitrepo/path中运行它就可以解决问题:

$ cd <path_to_repo>
$ solve.git

注意:-上面提到的文件扩展名为php、css、js、html、svg&txt。


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 660 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信