Pis*_*tos 11 git commit parent descendant gitk
如果您使用gitk --all
,您可以从所有分支机构查看您的仓库的所有提交.除了给定提交的后代之外,我想要这样的东西.
jsv*_*vnm 14
我想这可能会做你想要的.所有分支中的所有提交,其中A为祖先:
gitk --all --ancestry-path A..
Run Code Online (Sandbox Code Playgroud)
简而言之:
git log --all BRANCH~1..
Run Code Online (Sandbox Code Playgroud)
详细来说,举个例子:这是我刚刚创建的存储库的完整树:
$ git log --graph --oneline --decorate --all
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
| * 65b716e (c) c-5
| * ebe2a0e c-4
|/
| * 2ed9abe (b) b-4
|/
* ace558e (master) 3
* 20db61f 2
* 3923af1 1
Run Code Online (Sandbox Code Playgroud)
除了--all
,另一件事很明显:master
-> HEAD
:
$ git log --graph --oneline --decorate master..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
Run Code Online (Sandbox Code Playgroud)
所以我尝试将它们结合起来,它几乎得到了我想要的:
$ git log --graph --oneline --decorate --all master..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
* 65b716e (c) c-5
* ebe2a0e c-4
* 2ed9abe (b) b-4
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这并没有显示分支之间的关系,因为我们询问的分支被省略了。所以我们必须master
像这样使用来自父级的日志:
$ git log --graph --oneline --decorate --all master~1..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
| * 65b716e (c) c-5
| * ebe2a0e c-4
|/
| * 2ed9abe (b) b-4
|/
* ace558e (master) 3
Run Code Online (Sandbox Code Playgroud)
达达!(我不知道这在过去是否根本不起作用,但以防万一:我使用的是 git 版本 1.7.1)
编辑 2017-11-17 - 感谢 STW 实际展示了这个问题:独立的树会把它搞砸。完全独立的提交master
将包含在此输出中。从上述 repo 的副本开始,这是我的最后一个命令将输出的内容:
$ git checkout --orphan z
Switched to a new branch 'z'
$ git commit --allow-empty -m'z-1'
[z (root-commit) bc0c0bb] z-1
$ git commit --allow-empty -m'z-2'
[z 1183713] z-2
$ git log --graph --oneline --decorate --all master~1..
* 1183713 (HEAD -> z) z-2
* bc0c0bb z-1
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
| * 338432a (c) c-5
| * 2115318 c-4
|/
| * 43a34dc (b) b-4
|/
* ce05471 (master) 3
Run Code Online (Sandbox Code Playgroud)
该z
分支,创建作为一个孤儿,有没有共同的历史master
,所以z-1
并z-2
应被排除在外,但并非如此。这就是--ancestry-path
为了,我现在明白了。包括它将排除分支z
:
$ git log --graph --oneline --decorate --all --ancestry-path master~1..
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
| * 338432a (c) c-5
| * 2115318 c-4
|/
| * 43a34dc (b) b-4
|/
* ce05471 (master) 3
Run Code Online (Sandbox Code Playgroud)
为了完整性,即使已经有了--ancestry-path
,当前的最佳答案也没有正确显示分支关系,因为它排除了提交master
本身:
$ git log --graph --oneline --decorate --all --ancestry-path master..
* 6069f73 (a) a-6
* 654d106 a-5
* a218c59 a-4
* 338432a (c) c-5
* 2115318 c-4
* 43a34dc (b) b-4
Run Code Online (Sandbox Code Playgroud)
提交只知道其父级(因此一直向上),但不知道其子级/后代。您必须使用 A..B 之类的符号才能找到它。
例如,如果您想查找自给定提交 A 以来当前分支中的提交,您可以执行以下操作:
git rev-list A..
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2628 次 |
最近记录: |