我想对我的仓库中的文件进行更改,然后强制git相信该文件已取消合并并显示在git status
中,如下所示:
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add <file>..." to mark resolution)
#
# both modified: lib/delayed/recipes.rb
#
这就是我的全部问题。请继续阅读,了解原因,因为我知道这是第一件要问的问题。
这里的目的是Piston的错误修正,它现在会在索引中留下合并冲突,而这些冲突很容易被忽视。
piston update
使用Git仓库的方式是:
git merge master
以将我们的本地更改与远程仓库的更改合并我希望通过允许将包含合并冲突的文件提交到临时分支来解决此问题,但最后(在运行git merge --squash
之后)我想告诉git有关具有合并临时仓库中的冲突。
答案 0 :(得分:12)
在Git文件中,合并冲突(通常)索引中有三个版本,工作区中的版本包含diff3 -E
/ rcsmerge
冲突标记。索引中的版本是来自共同祖先的第1阶段,第二阶段是“我们的”版本,第3阶段是“他们的”版本。对于未合并文件,阶段0中没有版本(您可以使用git update-index --unresolve
通过删除阶段0来恢复未合并状态。)
您需要使用git ls-files --stage
或git ls-tree <commit>
来获取要放入索引的blob(文件版本)的sha-1标识符,如果要生成版本,则需要git hash-object -w <file>
从头开始/从工作区版本的文件。然后使用git update-index --index-info
将更高阶的阶段放入索引文件(此后为git update-index --unresolve
,或者在填充更高阶段以从索引中删除阶段0之前git update-index --force-remove
。您可以使用git checkout --conflict=merge -- <file>
在工作区中使用合并标记重新生成文件。
另请参阅:“How to selectively recreate merge state?”Git邮件列表上的帖子。