Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git合并我的文件中的左头标记_Git_Git Merge_Merge Conflict Resolution_Git Merge Conflict - Fatal编程技术网

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

Git合并我的文件中的左头标记,git,git-merge,merge-conflict-resolution,git-merge-conflict,Git,Git Merge,Merge Conflict Resolution,Git Merge Conflict,我试图使用Git在命令行中合并一个文件,这时出现一条错误消息,告诉我合并已中止 我以为就这样结束了,但后来我意识到我的文件里有gitmarks。像这样: start = expression validchar = [0-9a-zA-Z_?!+\-=@#$%^&*/.] integer = <<<<<<< HEAD digits:[0-9]+ { return digits.join(""); }

我试图使用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
开始=
表达
validchar=
[0-9a-zA-Z+\-=@$%^&*/.]
整数=
>gh页面
文件不是由我编辑的,显示插入了以下内容的行:

  • 小于号(
    >gh页
    )后的标题
更糟糕的是,文件内容不再有序。有人知道我如何使这些文件恢复正常,以及我在gh分支中所做的更改合并到主分支中吗?

这些都是。您仍在合并过程中,但有些部分Git无法自动合并。你将根据自己的意愿,然后提交结果


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


绝对要从“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:filename语法查看不同的版本。请参阅以获取解释。但以上所有内容都假设“git status”将文件显示为需要合并

最后,您始终可以选择:

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

所有答案都是正确的,但如果您希望自动删除所有冲突标记并希望自动更改文件以保留HEAD,则可以创建自己的bash脚本,如:-

示例脚本:

#vim/usr/sbin/solve.git

(附于下文)

#/bin/bash
对于美元中的f(grep-Rl'^>>'-include=“*.php”--include=“*.css”--include=“*.js”--include=“*.html”--include=“*.svg”--include=“*.txt”。)
做
sed-i-e'/^====,/^>/d'-e'/^>/d'$f
回显“$f已修复”
完成
吉特加;git commit-am“[+]由`whoami`”在`date`从`hostname`解析--无验证
#chmod 755/usr/sbin/solve.git

&只需在GIT repo/path中运行它即可解决:

$cd

$solve.git


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

在Atom中,我遇到了一个问题,即某些文件没有将已解决的合并冲突保存到驱动器中,因此我必须手动单击“保存”。 我花了很长时间才弄明白。

我来自美国。我想要一些自动合并半合并文件的方法,而不是手动编辑文件(正如其他答案中所建议的,我不太喜欢这样做)。下面是我通过netbeans完成的工作,但也可以通过命令行完成

现在,请记住,只有在
merge->add->commit
之后,您立即意识到自己搞砸了,并且想要重新执行流程时,这才有效

步骤1:重置为上一次提交

git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e
步骤2:重新尝试合并分支

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

此时,如果您正在使用GUI,则会出现合并窗口提示。然后您就可以正常进行了。

@lowerkey这正是您希望最终合并结果的外观。我的猜测是,你真的只想要
gh页面中的部分,所以你只需要删除
行,将实际代码的两行保留在
====
>
之间。谢谢,我想我已经掌握了窍门。删除从head到=====的所有内容,然后删除剩余的头标记。是的,没错。(没有真正的“休息”要处理——你只是在提交合并的结果,如果没有冲突,Git通常会自动完成的。)@ LealKEY,请考虑这个话题。我建议你通读这本书,因为你似乎对VCSE的工作方式缺乏一定的基础知识,最好是为将来可能出现的问题做好准备。这真有趣。你指向一个问题的答案,这个答案被标记为这个问题的副本,尽管这个问题的答案可以在另一个问题中找到。我非常想支持“从
git状态开始
,看看你得到了什么”的建议:在一些圈子里,指责git想象中的复杂性是很时髦的,但事实上,仔细阅读git status的输出就足以理解在大多数常见情况下下下一步该做什么。因此,真的:如果出现问题,停下来,阅读git status
,想一想。如果你真的不想合并任何东西(或者认为没有必要合并),在这里登陆,并且对几十个文件中“手动编辑这些部分”的建议感到震惊,
git merge--abort
将我的本地文件夹恢复到以前的状态<代码>git状态
向我建议了这一点。如果您真的想编辑它们,
git mergetool
(如下面的答案所示)可能就足够了。
#!/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
git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e
git merge --ff origin/feature/YOUR-Branch_here