しかし、私はちょうど、次のようになるのは、私は以下の歴史Gitのログ履歴の簡素化
D---E-------F
/ \ \
B---C---G---H---I---J
/ \
A-------K---------------L--M
gitのログ--ancestryパスD..Mは私に
E-------F
\ \
G---H---I---J
\
L--M
を与える持っているとしましょう
E
\
G---H---I---J
\
L--M
それとも
E-------F
\
I---J
\
L--M
本質的に、私は2つではなく1つのパスを横切りたいと思います。
これは可能ですか?もしそうなら、コマンドは何ですか?
編集:
私は--first-親を使用して試してみたが、これはまさにそれではありません。 --first-親G..M FがIの最初の親である代わりに、私は
H---I---J
\
L--M
をたいすべてのヘルプは次のようになりますので、それは、Fが含まれて私に
F
\
H---I---J
\
L--M
を与える gitのログ
ソリューション
を高く評価(それは私のために働いていた):@VonCが述べたように、これを行い、単一のワンライナーがありません。だから私はbashスクリプトを使い終わった。それぞれについて、
- は、$コミットの親が、はい、続行した場合、我々は
- に以前あっコミット含まれている場合は「gitのログ--ancestryパスG..M」が
- 決定にコミット。何か面白いことをする。
- いいえの場合は、そのコミットをスキップします。たとえば、
、--first-コミットG..Mが
H - F - I - J - L - M
でgitのログは、しかし、Fの親はEである、ないH.だから、私たちは私に
H - I - J - L - M
を与え、Fを省略
よろしく!
私は彼が答えを好きになるだろうとは思いませんが、理解する必要のある基本的なポイントがあります:それは直線的ではないので、線形ログは実際のgitでは動作しません開発。たとえば、ChangeLogファイルを作成しようとするときなど、ブランチに入ったすべての変更を知りたい人にとっては不幸です。 ChangeLogファイルが線形履歴であり、開発ができなかったため、たくさんのマージを含むgitからChangeLogファイルを作成するのは実際にはうまくいきません。 –
@Wes:はい、Gitは* content *のマネージャーです.2つのコミットの間でアクセス可能なコミットのコンテンツがマージの結果である場合、DAGを後ろに回ってログを取得すると、その内容に貢献した歴史。 – VonC
私は全くあなたの両方に同意しますが、私はこれに対して1ライナーを持っていないと思いますが、驚くべきことではありません。 VonCの答えは私の質問に答えるので、私はVonCの回答を受け入れるつもりですが、私が思いついた解決策を含めるように質問を編集しました。どうぞご覧ください –