我正在尝试将一个存在冲突的 pull 请求 merge 到一个文件中(见下文)。 merge pull 请求的说明是provided by github如下面所述。执行此 merge 非常重要,这样提交 pr 的人才能获得荣誉。
# Step 1: From your project repository, check out a new branch and test the changes.
git checkout -b droark-master master
git pull https://github.com/droark/cryptopp.git master
# Step 2: Merge the changes and update on GitHub.
git checkout master
git merge --no-ff droark-master
git push origin master
我知道如何修复一个冲突文件中的一行。我不知道如何让 Git 执行 merge 并停止提示损坏的索引文件。
我如何让 Git 执行 merge ,确保提供 pull 请求的人获得荣誉,并停止破坏索引文件?
我尝试修复与 Git merge errors 的 merge .一组错误变成另一组错误,无穷无尽。我也尝试根据 Ignore files during merge 重置问题文件计划复制/粘贴所需的一行,但损坏的索引仍然存在。
这完全是浪费时间,我不再有兴趣尝试使用 Git 的方式,因为它浪费了太多时间。现在我只希望 Git 执行 merge 并停止破坏索引文件。
这是使用 github 的指令 merge 时产生的输出:
$ git pull https://github.com/droark/cryptopp.git master
From https://github.com/droark/cryptopp
* branch master -> FETCH_HEAD
Auto-merging validate.h
Auto-merging validat2.cpp
Auto-merging validat1.cpp
Auto-merging test.cpp
CONFLICT (content): Merge conflict in test.cpp
Auto-merging pubkey.h
Automatic merge failed; fix conflicts and then commit the result.
最佳答案
不解决冲突就无法 merge 。否则,git 怎么知道要 merge 什么?但是,您可以使用 git checkout --ours <filepath>
从要 merge 的任一分支中 check out 版本。或 git checkout --theirs <filepath>
.这是一个例子:
假设您在 master 分支上 merge 暂存:
git checkout master
git merge staging
并且 git 显示了一堆冲突:
...
CONFLICT: Readme.md
...
如果要保留Readme.md
的版本那是在 master 上,然后你会运行:
git checkout --ours Readme.md
请注意,因为您在 master --ours
上指的是“这个”分支,即master。
现在,您可以简单地将它添加到索引中以将其标记为已解决:
git add Readme.md
这实际上忽略了对 Readme.md
的任何更改在 staging
上分支机构。
您可以对每个要从 merge 中忽略的文件重复此过程。完成后,像往常一样提交:
git commit -m "whatever..."
为了对所有有冲突的文件重复它,你可以这样做
for f in $(git diff --name-only --diff-filter=U | cat); do
echo "Resolve conflict in $f ..."
git checkout --theirs $f
done
关于git - 发生冲突时如何强制 merge 成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820084/