解决冲突的Git合并后如何清理?

30

我在正在进行的项目中的一个.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创建的?

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

3个回答

54
你可以像删除其他文件一样简单地将它们删除。例如:

删除命令如下:

rm MyHeader.h.orig

或者,如果没有其他未跟踪的文件,在您提交后使用

git commit -a

您可以使用以下方式来清理您的代码库:

git clean -n
git clean -f

git clean -n 将告诉您 git clean -f 将要做什么,以便您可以确信这正是您想要的。


谢谢 - git clean -n/-f 已经是长期以来的首选。如果您只想在子文件夹上执行清理操作,也可以在末尾指定路径。 - Craig Otis
有时候 *.orig 文件会出现在 .gitignore 文件中。在这种情况下,正确的做法是使用干运行(dry-run)来包括被忽略的文件:git clean -nx */*.orig,检查后再删除 git clean -fx */*.orig。 原文链接:http://travisjeffery.com/b/2011/12/keeping-your-git-repo-clean-of-orig-files/ - Julian Cardenas

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

1
请注意:"如果它们是唯一的未跟踪文件"。在使用 git clean 命令时务必小心,因为您很容易会误删那些不受版本控制的文件!我建议您手动删除它们。 - Brent Faust
2
或者,我已经养成了使用文件模式的习惯,例如:git clean -f *.orig - Craig Otis

1

首先提交您的合并。

一旦您确信一切都很好,只需手动删除这些额外的文件(例如使用rm <filename>)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接