【问题标题】:Cleaning up after a conflicted git merge?在冲突的 git 合并后清理?
【发布时间】:2013-02-28 17:10:41
【问题描述】:

在我正在处理的项目中,.h 头文件存在小冲突。这个项目在 Git 中被跟踪。

幸运的是,冲突很容易解决。我用过

git mergetool

并选择了默认值 (opendiff),这似乎是我 Mac 上的 FileMerge。我进行了适当的更改,保存了文件,然后关闭了。

然后Git问我合并是否成功,我说是:

Was the merge successful? [y/n] y

但现在,我有:

> git st
# On branch develop
# Changes to be committed:
#   modified:   MyHeader.h
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   MyHeader.h.BACKUP.52920.h
#   MyHeader.h.BASE.52920.h
#   MyHeader.h.LOCAL.52920.h
#   MyHeader.h.REMOTE.52920.h
#   MyHeader.h.orig

哪些额外的垃圾冲突文件是由 FileMerge 创建的,哪些是由 Git 创建的?

更重要的是:如何删除它们?

【问题讨论】:

    标签: git version-control merge merge-conflict-resolution filemerge


    【解决方案1】:

    首先提交您的合并。

    一旦您对一切正常感到满意,只需手动删除这些额外文件(例如,使用 rm &lt;filename&gt;)。

    【讨论】:

      【解决方案2】:

      您可以像删除任何其他文件一样简单地删除它们。例如:

      rm MyHeader.h.orig
      

      或者,如果没有其他未跟踪的文件,那么在你提交之后

      git commit -a
      

      你可以清理你的存储库

      git clean -n
      git clean -f
      

      git clean -n 会告诉您git clean -f 会做什么,因此您可以确定这是您想要的。

      【讨论】:

      • 谢谢 - git clean -n/-f 长期以来一直是首选。如果您只想对子文件夹执行清理,也可以在末尾指定路径。
      • 有时 *.orig 在 .gitignore 文件中。在这种情况下,要走的路是空运行,包括被忽略的文件:git clean -nx */*.orig,检查然后删除git clean -fx */*.orig。归功于:travisjeffery.com/b/2011/12/…
      【解决方案3】:

      如果它们是唯一未跟踪的文件,您可以使用git clean 删除它们。使用-n 标志运行一次以查看将删除的内容,如果确定,请使用-f 运行它。如果您有想要保留的未跟踪文件,请勿使用它!

      【讨论】:

      • 注意:“如果它们是唯一未跟踪的文件”。小心git clean,因为您很容易丢失不受版本控制的文件!我建议只手动删除它们。
      • 或者,我已经养成了使用文件模式的习惯,例如:git clean -f *.orig
      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2015-10-15
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多