git - 如何通过只有冲突文件来解决 git 冲突?

标签 git merge recovery disaster-recovery

我的 git merge 问题很大,我的仓库现在有点麻烦。

实际上,我有很多文件看起来是这样的:

<<<<<<< HEAD
...version1...
=======
...version2...
>>>>>>> <long hexa code>

正如我们所知,这是 merge 冲突情况下的正常行为。 但是我没有其他文件版本,只有这些。

我如何以交互方式 merge 它?我需要的是看到彼此相邻的“version1”和“version2”并能够以交互方式 merge 它们。

当然,这些文件格式意味着每个软件都有语法错误。

git merge 和所有的 merge 工具都在说,没有 merge 冲突。但是,有。

我该怎么办?

分机#1: 我用一些 shellscripting 分割文件,使用命令

for i in $(cat ../conflicts); do csplit $i '/=======/' -f $i. -n 1;done

现在我在 path.0path.1 中有了这些文件的部分。现在我需要一个交互式解决方案来 merge 它们。

最佳答案

如果 git 说没有 merge 冲突,那么这些文件要么按原样添加,要么已经提交。

如果它们是按原样添加的,那么您应该运行 git reset HEAD 这将重置索引的状态。然后,您应该再次看到所有已提交的新文件,在这种情况下,您可以单独处理它们。

如果它们实际上已被提交,那么您将需要撤消 merge 节点,然后再次执行 merge 节点。您可以使用 git reset --hard HEAD^ 重置到最后一个已知点(并丢弃提交)并再次重新进行 merge 。请注意,此选项将丢失您的数据;您实际上是在重新进行 merge 。

关于git - 如何通过只有冲突文件来解决 git 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31250964/

相关文章:

git - 将 tfs 分支迁移到 Azure 中的 git 存储库

git - 为什么 git branch 没有显示一个分支?

git - 将 merge 提交重写为压缩 merge 提交

git - 如何从已删除的 Git 远程存储库中恢复

mysql - 从删除/截断的 MySQL 表中恢复数据

git - 如何将远程master分支更改到本地开发分支?

git - 升级 Symfony2 标准版时解决 Composer merge 冲突

git - 查找在 git merge commit 期间冲突或本地编辑的文件

git - 为什么 git merge 会让我丢失一行

linux - 重新安装linux后如何恢复已删除的文件