git - 发生冲突时如何强制 merge 成功?

标签 git github merge

我正在尝试将一个存在冲突的 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/

相关文章:

ruby-on-rails - Capistrano 偶尔无法 pull git repo

algorithm - 自上而下的范围合并?

python - 复杂的 pandas 合并操作

python - Pandas (Python)中的 "Anti-merge"

Git 从本地存储库中删除上游

java - 如何在您的网站上实现 Git/GitLab 以使人们能够编写代码?

git - 'closing' 和 'deleting' 有什么区别?

GitHub 克隆错误 : Cannot clone with EOF error

git - 使用 SSH 克隆 git repo

git - 子模块中 git 提交消息的 vim 语法着色