git - 如何 merge 二进制文件?

标签 git

我在my_branch中有一个二进制文件,当我需要修改它的时候,git当然不会 merge 它。

所以我现在做的是:

git checkout my_branch
# make a change to gui.bin
mv gui.bin ~/
git commit -a
mv ~/gui.bin .
git commit -a
# git rebase to 1 commit
git checkout master
git merge my_branch

但是有没有更简单的方法呢?

最佳答案

我不太确定您的测试用例的目的是什么。您似乎正在将 gui.bin 移开,然后将其放回原处...

通常,二进制文件不需要 merge ,您只想从一个地方或另一个地方选择一个确定的版本。在真正需要 merge 它们的地方,您要么需要自定义 merge 工具,要么使用某种编辑器和大量手动干预。

我注意到您在示例中使用了 commit -a。避免不必要的冲突的第一步是不要提交任何可能偶然触及的二进制文件,除非您想要提交它们。如果您只是 git add 需要提交的文件,并且没有 -a 提交,那么这会有所帮助。或者,如果只有一个文件您不想提交,您可以添加 -u 并在提交之前重置它。

git add -u
git reset -- dontcommit.dat
git commit

当您 merge 两个都更改了二进制文件的分支时,您可能希望保留一个版本而不是另一个。在 git 告诉你它们在你的二进制文件中存在冲突的 merge 之后,你可以告诉 git 使用你所在的分支中的版本,如下所示:

git checkout --ours binary.dat
git add binary.dat

或者从你要 merge 的分支中这样:

git checkout --theirs binary.dat
git add binary.dat

关于git - 如何 merge 二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089560/

相关文章:

windows - 如何在 Windows 上更改远程/目标存储库 URL?

git:撤消函数中的更改

git - 如何删除 GIT 中所有添加的文件

git - 在编写新的提交消息时如何使用以前的提交消息?

git - 错误 : cannot update the ref <branch>: unable to append to <git location>: Not a directory

git - 警告 : Permanently added the RSA host key for IP address

r - Git 推送失败 (Github/RStudio)

Git 不跟踪 Hexo 主题文件

linux - 在 Linux/Windows dualboot 之间共享 NTFS 分区上的 git repo

git - 如何避免git中的狐步 merge