【问题标题】:Show branch names with "git log --graph --oneline --decorate" when it takes a filename使用文件名时使用“git log --graph --oneline --decorate”显示分支名称
【发布时间】: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 显示提交的原始分支,但是很难从每个文件的提交图(上面的4151fa98dc5658)中识别要传递给git branch --contains 的提交在存储库中。

【问题讨论】:

  • 刚刚在我手头的回购中尝试了git log --graph --oneline --decorate -15 -- <some file>。像魅力一样工作,装饰品包含在输出中。是不是您过滤的提交碰巧没有指向它们的标签/分支?

标签: git git-log


【解决方案1】:

尝试添加--simplify-by-decoration

# note : if you use '--all', you don't need to add 'develop'
git log --graph --all --oneline --simplify-by-decoration -- path/to/a/file

你会得到:

  • 所有带有分支或标签(或任何实际引用)标记的提交
  • 以及所有以某种方式修改的提交path/to/a/file

如果您不想在图表中看到所有可能的参考,您可以使用--decorate-refs

# will only show local branches :
git log ... --decorate-refs=refs/heads

# will only show 'origin/master' and local tags :
git log ... --decorate-refs=refs/remotes/origin/master --decorate-refs=refs/tags

【讨论】:

    【解决方案2】:

    要确认所有必要的更改已成功合并到开发分支,您可以使用双点语法,例如。

    git log master..experiment

    如果您有一个提交列表,这意味着您在实验分支中的提交尚未合并到您的 ma​​ster 分支中,并且如果您在输出意味着 master 分支拥有 experiment 拥有的所有提交。 有关详细信息,请参阅https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection 双点部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2017-09-18
      • 2020-12-11
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多