如何知道是否有git rebase正在进行?
当我启动git rebase -i
,我可以发出像git rebase --continue
或git rebase --abort
。 这些命令仅在正在进行变形时才起作用。
我怎样才能知道是否有进行中的改版?
(我会非常感谢一些关于rebase如何在内部工作的细节; git对一个回购有什么作用,使得它具有“正在发生变化”的状态,?)
首先,在rebase期间有一个ORIG_HEAD
(但不限于rebase命令)
但是你也可以看看2010年的Git 1.7.0 git-rebase.sh
脚本 (它可以像内部一样);)。
像这些线可以给你另一个线索:
dotest="$GIT_DIR"/rebase-merge
test -d "$dotest" -o -d "$GIT_DIR"/rebase-apply || die "No rebase in progress?"
sabgenton评论:
rebase-apply
文件夹似乎与rebase
一起出现, rebase-merge
仅与rebase -i
。 嬉皮士还在2017年评论说:
编码指南不鼓励使用-o
(请参阅Documentation/CodingGuidelines
),所以现在(2017,但也从2011年开始,Git 1.7.6)的正确方法是:
(test -d ".git/rebase-merge" || test -d ".git/rebase-apply") || die "No rebase in progress?"
Jelaby在评论中建议:
(test -d "$(git rev-parse --git-path rebase-merge)" ||
test -d "$(git rev-parse --git-path rebase-apply)" )
这样可以正确处理没有.git
目录的工作树和异常或非标准布局,并且还允许您从工作目录的子目录运行此测试。
这是因为git rev-parse --git-path <path>
:确实解析了“ $GIT_DIR/<path>
”。
Git 2.6+(2015年第3季度)将会在转换期间打印更多信息:
请参阅提交592e412,提交84e6fb9(2015年7月6日),提交84e6fb9(2015年7月6日),并提交guillaumePagès( gitster
)提交df25e94,提交05eb563(2015年6月30日)。
(由Junio C gitster
合并 - gitster
- 在提交178d2c7,2015年8月3日)
status
:在rebase -i
期间提供更多信息
git status
会在rebase -i
期间提供更多信息,介绍在rebase -i
期间完成的命令列表。
它显示:
它还提供了在.git
目录中查找整个文件的提示。
您还可以在contrib/completion/git-prompt.sh
中的__git_ps1
函数中检查这种检测方式, __git_ps1
函数可用于git-aware 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
如果你有EasyGit, eg status
会告诉你:
$ eg status
(Not currently on any branch.)
(YOU ARE IN THE MIDDLE OF A INTERACTIVE REBASE; RUN 'eg help topic middle-of-rebase' FOR MORE INFO.)
Changes ready to be committed ("staged"):
modified: .gitmodules
renamed: config_loader.rb -> code/config_loader.rb
Newly created unknown files:
vendor/
(YOU ARE IN THE MIDDLE OF A INTERACTIVE REBASE; RUN 'eg help topic middle-of-rebase' FOR MORE INFO.)
在彩色终端中,通知非常突出:
( eg help topic middle-of-rebase
显示文档“如何解决或中止未完成的重新分配”。)
上一篇: How to know if there is a git rebase in progress?
下一篇: Undo delete in GIT