【发布时间】:2021-11-03 11:24:42
【问题描述】:
背景
- 我们的团队使用 GitLab 上的 git 存储库来存储产品的源文件。
- 我们正在使用类似 git-flow 的分支模型来提交和合并对存储库的更改。
- 我发现有些功能分支没有被无意合并。此外,还有一些功能分支应该被删除,例如:
- 已成功合并到开发分支且尚未删除的分支
- 放弃的分支(因为无法成功合并)
- 我想区分应该合并的分支和应该删除的分支。
我想做什么
为了确认所有必要的更改已成功合并到开发分支,我尝试显示每个文件的合并图,如下所示:
git log --graph --all --oneline --decorate=full develop -- ./path/to/a/file
如果有一个文件是这样分叉而不是合并的,我想请文件的所有者合并或删除包含该文件的分支。
* 4151fa9 Commit Message 4
| * 8dc5658 Commit Message 3
* | d579006 Commit Message 2
|/
* 4df043a Commit Message 1
问题
我想知道分叉但未合并的分支的名称(上面的8dc5658),但如果git log --graph --oneline --decorate 将文件名作为参数,则不会显示分支名称。
git log --graph --all --oneline --decorate=full develop -- ./path/to/a/file 的结果我想得到的是这样的:
* 4151fa9 (HEAD -> develop) Commit Message 4
| * 8dc5658 (branch-abandoned) Commit Message 3
* | d579006 Commit Message 2
|/
* 4df043a Commit Message 1
问题
当git log --graph --oneline --decorate 以文件名作为参数时,如何在结果中显示分支名称?
请注意,您可以使用git branch --contains COMMIT 显示提交的原始分支,但是很难从每个文件的提交图(上面的4151fa9 和8dc5658)中识别要传递给git branch --contains 的提交在存储库中。
【问题讨论】:
-
刚刚在我手头的回购中尝试了
git log --graph --oneline --decorate -15 -- <some file>。像魅力一样工作,装饰品包含在输出中。是不是您过滤的提交碰巧没有指向它们的标签/分支?