当我启动一个git rebase -i时,我可以发出像git rebase --continue或git rebase --abort这样的命令。这些命令仅在rebase正在进行时才起作用。
我如何才能知道是否有正在进行的rebase?
(我非常感谢关于rebase内部工作原理的一些细节;git对一个repo做了什么,使它处于“正在进行的rebase”状态?)
发布于 2010-10-13 18:12:23
您还可以在__git_ps1 function in contrib/completion/git-prompt.sh中检查这种检测是如何完成的,它可以用于支持git的bash提示符:
if [ -f "$g/rebase-merge/interactive" ]; then
r="|REBASE-i"
b="$(cat "$g/rebase-merge/head-name")"
elif [ -d "$g/rebase-merge" ]; then
r="|REBASE-m"
b="$(cat "$g/rebase-merge/head-name")"
else
if [ -d "$g/rebase-apply" ]; then
if [ -f "$g/rebase-apply/rebasing" ]; then
r="|REBASE"
elif [ -f "$g/rebase-apply/applying" ]; then
r="|AM"
else
r="|AM/REBASE"
fi
fi
fi发布于 2012-08-08 21:32:56
如果有一个交互式的rebase正在进行,这将告诉你你在这个过程中的位置:
$ cat .git/rebase-merge/done
pick 786139e lrg
edit 668b8a6 ktio
$ 现在我正在编辑一个交互式的“ktio”补丁。
如果没有进行rebase,它将如下所示:
$ cat .git/rebase-merge/done
cat: .git/rebase-merge/done: No such file or directory
$ 发布于 2014-04-25 02:45:32
在bash命令行中:
ls `git rev-parse --git-dir` | grep rebase如果存在rebase文件夹,将返回退出代码0(成功),并将rebase文件夹输出到STDOUT。如果你没有处于rebase过程中,那么它将不输出任何内容,并返回非0退出代码。所以你甚至可以这样做:
ls `git rev-parse --git-dir` | grep rebase || echo no rebasehttps://stackoverflow.com/questions/3921409
复制相似问题