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

时间:2015-03-17 14:09:22

标签: git

我使用脚本来管理我的开发过程。有时我需要知道合并是否正在等待。

我习惯使用“git ls-files --unmerged”,但是当解决冲突并将未合并的文件添加到索引时,它不起作用。

在这种情况下,有没有办法知道合并是否正在进行?

谢谢。

2 个答案:

答案 0 :(得分:6)

从脚本中查看:"$(git rev-parse --git-dir)"/MERGE_HEAD是否存在(__git_ps1是如何做的)。


手动,我让回购状态显示在我的提示中。

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

您可以找到there指令。

简而言之,download git-prompt.sh,将其放在PATH中,在~/.bashrc中提取,在__git_ps1 PS1中使用~/.bashrc }。

阅读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

答案 1 :(得分:3)

如果您处于存在冲突的非快进合并中,那么git status alone可以通知您当前的状态。

来自网站:

$ 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其他部分可以找到的标准元数据的肩膀上。