在重新设置基准期间,我经常希望查看当前正在应用的提交消息,以帮助理解合并冲突。
我曾经跑步:
$ cat .git/rebase-apply/message
哪个会很好地给我。但是,在运行git v2.20.1的新机器上,该文件在重新设置期间不再存在。
在哪里可以获得当前正在应用的提交消息(当变基暂停合并冲突时)?
答案 0 :(得分:2)
TL; DR:如果您在添加的工作树中,请检查git rev-parse --git-path rebase-merge/message
和git rev-parse --git-path rebase-apply/msg
。
不幸的是,获取此信息的接口不稳定。但是,您要查找的文件确实存在在现代Git中仍然存在。
随着git worktree
的到来,大多数状态信息已经(至少可能)移动了。现在存在相同类型的文件,但位置不同。要查找git相对路径名称为 P 的文件的位置,请使用git rev-parse --git-path P
:
$ git rev-parse --git-path HEAD
.git/HEAD
$ git worktree add ../git2 --detach
Preparing worktree (detached HEAD 5d826e9729)
HEAD is now at 5d826e9729 Git 2.20
$ (cd ../git2; git rev-parse --git-path HEAD)
[redacted]/git/.git/worktrees/git2/HEAD
从Git 2.13开始,可以在其中找到基准信息的两个目录是:
rebase-apply
rebase-merge
(和往常一样,使用git-path技巧来查找实际目录或其中的单个文件)。其中的文件最初是对称的,因为代码只设置了一个状态目录,然后根据需要将文件放入其中。文件集可能会在以后的任何Git版本中更改;但是,由于contrib/completion/git-prompt.sh
,至少有一些希望保持一致。首先在rebase-merge
内部查找以下内容:
head-name the branch you were on when you started the rebase
msgnum how many commits are already done (how far along are you)
end the total number of commits to do
interactive if exists, means this is git rebase -i (vs git rebase -m)
如果rebase-merge
不存在,它将在rebase-apply
内部(如果存在)查找:
next how many commits are already done (how far along are you)
last the total number of commits to do
rebasing if exists, means this is an ordinary git rebase, in which case:
head-name the branch you were on when you started rebasing
applying if exists, means this is a git am without rebase
如果既没有变基也没有应用文件,则提示代码将采用“ git-am或git-rebase”,而不会尝试进一步猜测。
如果两个目录都不存在,则提示设置代码将继续检查:
MERGE_HEAD a merge is in progress
CHERRY_PICK_HEAD a cherry-pick is in progress
REVERT_HEAD a revert is in progress
BISECT_LOG a bisect is in progress
定序器代码(虽然不固定,但仍不稳定,但现在已用于除传统变基以外的所有代码,尽管我不确定是在2.13中使用了多少),但还有更多—请参阅所有GIT_PATH_FUNC
the source code中的行。其中之一是您的rebase-merge/message
文件。无论您是进行交互式变基,git rebase -m
还是git rebase -s strategy
,此文件都应该存在于适当的依赖于工作树的路径中。我认为,对于非交互式的git rebase
,文件应位于rebase-apply/msg
中。
答案 1 :(得分:0)
在2.23版中,我看到以下命令:
git am --show-current-patch
它显示提交消息以及更多信息。