を使用するgitk --all
と、すべてのブランチからリポジトリのすべてのコミットを確認できます。特定のコミットの子孫のみを除いて、そのようなものが必要です。
4 に答える
これはあなたが望むことをするかもしれないと思います。A を祖先とするすべてのブランチのすべてのコミット:
gitk --all --ancestry-path A..
要するに:
git log --all BRANCH~1..
詳細に例を示します: これは、作成したばかりのリポジトリの完全なツリーです。
$ 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
とは別に--all
、別のことは明白です: master
-> HEAD
:
$ git log --graph --oneline --decorate master..
* e3972be (HEAD, a) a-6
* 2707d79 a-5
* cdea9a7 a-4
だから私はそれらを組み合わせてみましたが、ほとんど私たちが望んでいたものになりました:
$ 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
しかし、残念ながら、これはブランチ間の関係を示していません。これは、質問しているブランチが省略されているためです。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
タダ!(これが過去にうまくいかなかったかどうかはわかりませんが、念のため: 私は git バージョン 1.7.1 を使用しています)
EDIT 2017-11-17 - 実際にこれに関する問題を示してくれた STW に感謝します: 独立したツリーはこれを台無しにします。から完全に独立しているコミットはmaster
、この出力に含まれます。上記のレポのコピーから始めて、これは私の最後のコマンドが出力するものです:
$ 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
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
--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
コミットは、その親 (したがって、ずっと上) についてのみ知っていますが、その子/子孫についての手がかりはありません。それを見つけるには、A..B のような表記を使用する必要があります。
たとえば、指定されたコミット A 以降の現在のブランチでコミットを見つけたい場合は、次のようにすることができます。
git rev-list A..