我一直在使用Windows上的Git (msysgit)来跟踪我一直在做的一些设计工作的更改。
今天我一直在一台不同的PC上工作(与远程repo brian),我现在正试图将今天完成的编辑合并到我笔记本电脑上的常规本地版本。
在我的笔记本电脑上,我已经使用git pull brian master将更改拉到我的本地版本。除了主InDesign文档之外,一切都很好-这显示为冲突。
PC (brian)上的版本是我想保留的最新版本,但我不知道什么命令告诉回购使用这一个。
我试图直接复制文件到我的笔记本电脑上,但这似乎打破了整个合并过程。
有人能告诉我正确的方向吗?
我遇到过一个类似的问题(想要提交一个包含一些二进制文件的提交,这在合并时引起冲突),但遇到了一个不同的解决方案,完全可以使用git完成(即不必手动复制文件)。我想我应该把它包括在这里,这样至少我下次需要的时候可以记住它。:)步骤如下:
% git fetch
这将从远程存储库获取最新的提交(您可能需要指定一个远程分支名称,这取决于您的设置),但不会尝试合并它们。它在FETCH_HEAD中记录提交
% git checkout FETCH_HEAD stuff/to/update
这将获取我想要的二进制文件的副本,并使用从远程分支获取的版本覆盖工作树中的内容。Git不会尝试进行任何合并,因此您最终得到的只是来自远程分支的二进制文件的精确副本。完成之后,就可以像平常一样添加/提交新副本了。
我的案子看起来像个bug....使用git 2.21.0
我拉了一下…它抱怨二进制文件:
warning: Cannot merge binary files: <path>
Auto-merging <path>
CONFLICT (content): Merge conflict in <path>
Automatic merge failed; fix conflicts and then commit the result.
然后这里的任何答案都没有产生任何有意义的输出。
如果我看一下我现在拥有的文件……这是我编辑的。如果我这样做:
git checkout --theirs -- <path>
git checkout --ours -- <path>
我得到输出:
Updated 0 paths from the index
我还保存着我那份文件如果我rm,然后签出,它会说1,但它仍然给我我的文件版本。
Git mergetool说
No files need merging
git状态显示
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
一种选择是撤销提交…但我很不幸,我犯了很多错误,这是第一次犯错误。我不想浪费时间重复了。
为了解决这个疯狂的问题:
我只是跑了
git commit
这会丢失远程版本,并可能浪费一些空间存储额外的二进制文件…然后
git checkout <commit where the remote version exists> <path>
这样就能把远程版本还给我了
然后再次编辑文件…然后提交和推,这可能意味着用另一个二进制文件的副本浪费空间。