low*_*key 91 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(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
Run Code Online (Sandbox Code Playgroud)
这些文件不是由我编辑的,而是显示插入的行:
<<<<<<< HEAD
)=======
)>>>>>>> gh-pages
)更糟糕的是文件内容不再有序.有谁知道我如何让这些文件恢复正常,我在gh-branch中所做的更改合并到主分支?
Amb*_*ber 95
那些是冲突标记.你还在合并的过程中,但有些部分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
Run Code Online (Sandbox Code Playgroud)
因此你将文件保存为......
integer =
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
Run Code Online (Sandbox Code Playgroud)
GoZ*_*ner 21
绝对以'git status'开头,看看你有什么.如果您中止了合并(或合并已中止)并且工作目录中存在冲突的文件,那么就会出现问题.Git状态会告诉你你在哪里.之后,您有很多选择.您应该手动解决合并提交,这可能具有挑战性,或者使用工具:
git mergetool
Run Code Online (Sandbox Code Playgroud)
如果您的文件列为需要合并,则合并工具将起作用.
您还可以执行以下操作之一:
git checkout --ours -- /path/to/conflicted-file # this is probably the one you want
git checkout --theirs -- /path/to/conflicted-file
Run Code Online (Sandbox Code Playgroud)
您可以使用:1:filename语法查看不同的版本.请看这里的解释.但以上所有假设'git status'显示文件需要合并.
最后,您始终可以选择:
git reset --hard # sounds like --hard is what you need but check other options
Run Code Online (Sandbox Code Playgroud)
所有答案都是正确的,但是如果您想自动删除所有冲突标记并想自动更改文件以保留 HEAD ,那么您可以创建自己的 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
Run Code Online (Sandbox Code Playgroud)
# chmod 755 /usr/sbin/solve.git
只需在您的 GIT 存储库/路径中运行它即可解决:
$ cd <path_to_repo>
$ solve.git
注意:- 上面提到的文件扩展名是 php、css、js、html、svg 和 txt。