我使用脚本来管理我的开发过程。有时候我需要知道是否有合并操作正在进行。
我曾经使用过 "git ls-files --unmerged",但是当冲突已解决并将未合并的文件添加到索引中时,它就无法工作了。
在这种情况下,有没有一种方法可以知道是否有合并操作正在进行?
谢谢。
我曾经使用过 "git ls-files --unmerged",但是当冲突已解决并将未合并的文件添加到索引中时,它就无法工作了。
在这种情况下,有没有一种方法可以知道是否有合并操作正在进行?
谢谢。
从一个脚本中查看:"$(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 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其他部分中可以找到的标准元数据。