如何知道git中是否正在进行合并

6
我使用脚本来管理我的开发过程。有时候我需要知道是否有合并操作正在进行。
我曾经使用过 "git ls-files --unmerged",但是当冲突已解决并将未合并的文件添加到索引中时,它就无法工作了。
在这种情况下,有没有一种方法可以知道是否有合并操作正在进行?
谢谢。
2个回答

9

从一个脚本中查看:"$(git rev-parse --git-dir)"/MERGE_HEAD 是否存在(这就是 __git_ps1 的做法)。


手动地,在我的提示符中显示仓库状态。

__git_ps1 有非常有用的功能。除了在命令行提示符中显示当前分支、状态、索引状态、远程跟踪分支状态外,它还告诉你是否有正在进行的合并。

你可以在这里找到说明。

简而言之,下载 git-prompt.sh,将其放入你的 PATH 中,在你的 ~/.bashrc 中引用它,在 ~/.bashrc 中使用 __git_ps1 在你的 PS1 中。

阅读 git-prompt.sh 顶部的注释以获取其他功能。

以下是一个示例:

gauthier@sobel:~/tmp/sigrt_val (master *) $ 

这里显示当前分支为 master,并且我有本地修改 *

另一个例子是合并冲突:

gauthier@sobel:~/tmp/sigrt_val (two) $ git merge one
Auto-merging test.c
CONFLICT (content): Merge conflict in test.c
Automatic merge failed; fix conflicts and then commit the result.
gauthier@sobel:~/tmp/sigrt_val (two *+|MERGING) $ 

(* 表示本地修改,+ 表示已暂存文件,|MERGING 表示当前处于未完成合并状态)


谢谢。我会查看是否存在.git/MERGE_HEAD。 - nuggets

4

如果您正在进行有冲突的非快进合并,则仅使用git status就可以了解当前状态。

来自该网站:

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

如果您已经解决了冲突,您可能会看到如下消息:

如果您已完成所有冲突,则可能会看到以下消息:

$ git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)
__git_ps1脚本是一个非常方便的视觉工具,但它仍然基于Git其他部分中可以找到的标准元数据。

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