簡體   English   中英

如何在 git log 中列出相關分支

[英]How can I list related branches in git log

我正在尋找一種可能性來顯示給定文件的歷史記錄以及給定提交所在分支的信息。

鑒於此 git 存儲庫:

$ git log --graph --all --decorate=full --pretty=oneline --abbrev-commit 
* 3b116ab (refs/heads/br2) x
| * 8777a0a (HEAD -> refs/heads/br1, refs/heads/branch) g
| * 9be1f38 d
|/ 
| * 3a30d9c (refs/heads/master) d
| * e678c2f c
|/  
* faa3666 b
* 03ea6ad a

我需要給定文件的歷史記錄

$ git log --graph --all --decorate=full --pretty=oneline --abbrev-commit -- a
* 9be1f38 d
| * e678c2f c  
|/  
* faa3666 b
* 03ea6ad a

以及提交所在分支的信息

$ git branch -a
* br1
  br2
  branch
  master

$ git branch -a --contains 9be1f38
* br1
  branch

$ git branch -a --contains e678c2f
  master

$ git branch -a --contains faa3666
* br1
  br2
  branch
  master

結合在一個概述中,例如

$ git magical-command
+ refs/heads/br2
| + HEAD -> refs/heads/br1, refs/heads/branch
| * 9be1f38 d
|/ 
| + refs/heads/master
| * e678c2f c
|/  
* faa3666 b
* 03ea6ad a

當然,實際上會有更多的提交不會改變我的文件“a”。

我認為這可能不是那么不尋常,但我沒有找到這樣的東西。 所以任何提示都會受到歡迎。

你可以得到你想要的東西,但首先需要澄清一個誤解,不要跳過這一點:提交可以是任意數量提交的祖先,你在本地存儲庫中使用的任何名稱都是無關緊要的。 分支名稱指的是歷史圖中當前特定的提交,但它們是嚴格本地的; 任何兩個 repo 中使用的分支名稱之間的任何對應關系都是方便或巧合的問題,您昨晚的 repo 中的WIP分支幾乎肯定與 Sam's 中的WIP分支無關。

您正在尋找的命令是

git log --graph --decorate --oneline --ancestry-path --simplify-by-decoration --branches ^9be1f38

前三個參數非常有用,我有

git config --global alias.lgdo '!f(){ git log --graph --decorate --oneline "${@---all}"; }; f'

所以git lgdo給出了一個完整的概述, git lgdo @給出了當前的結帳歷史,等等。

你的命令將是

git lgdo --ancestry-path --simplify-by-decoration --branches ^9be1f38

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM