2017-01-17 5 views
1

[NOW, THEN]の範囲内のコミットのリストを集めようとしています。ここで、NOWHEADであり、[THEN]8af39377であり、約120コミットです。gitはなぜ17年前からHEADが最初のコミットだと思うのですか?

When I run

> git log 8af39377289feba1876b3252b6d23 HEAD --oneline | cut -d " " -f 1 > commits.txt 

、その後commits.txtを見て、その2300行の長さと、それは(最初は2002年からコミット)8af39377としてトップエントリー(THEN)とa3b6eceとして下のエントリを示しています。

なぜGitはHEADがリポジトリへの最初のコミットだと思いますか?

+2

Gitを17年間使用していたためにアップアップされました。 –

+0

@TimBiegeleisen - ありがとう。その移行後。 – jww

+0

stackoverflow.com/questions/462974の2番目の回答をご覧ください。 A..BとA ... Bを示します。 'git log A B'は集合{A、B}かA∪Bです。 – ElpieKay

答えて

3

構文が間違っています。あなたが8af39とHEADの間の範囲を望むなら、8af39..HEAD

なぜそれが17年前に表示されているのかというと、ただ1つのリビジョンを指定すれば、そのコミットによってすべてのコミットを見つけることができます。すべてのコミットは、ルートまでのすべての方法で後方ポインタを持っているので、ルートコミットを見つけることになります。

Revision Specification範囲の指定のセクションを参照してください。言う

+1

私はその驚きはないと思います...引用した答えの 'の指示に従って、上記の出力を生成します。答えが出力されません。Gitが警告やエラーを出さないことは驚きではありません。どんな惨めなツール... – jww

+0

私のためにいくつかを検証できますか? 1)実際には3の代わりに2つのドットを使用していますか? 2)あなたの頭は本当に8af39の後ですか?コミットの順序が正しいことを確認したいだけです。 3)8af39はHEAD /あなたの現在の支店が実際に到達可能です。 'git log blah blah'コマンドを使ってエラーの原因として' cut'を削除してください。 – jbu

+0

私は言及しなければならない1つの余分な詳細があります。これは、HEADがマージコミットでない場合に機能します。 HEADがマージコミットの場合、私があなたに与えたコマンドの結果には、8af39が到達できないコミットも含まれます。それはマージベースより最近のいくつかの余分なコミットをリストすることができます。 – jbu

1
git log 8af39377289feba1876b3252b6d23 HEAD --oneline 

は「私の祖先によって制約日付順にソートされたこれら二つのコミット、全体の歴史を与えます」。

あなたは範囲内のコミットのリストがNOW HEADで、[THEN] 8af39377であり、その約120コミット前

が、あなたの場合は、[NOW、THEN]

をしたいですログ出力がされされているあなたに反する:git logは祖先によって制約、最初の最も最近のその出力を示しており、

それは8af39377として最上位のエントリを示しています。

あなたのコミット順は間違っています。デフォルトの出力を抑制していないと、コミットの日付も明示的に表示されていたので、それが日付か祖先の問題かどうかを確認できます。

かかわらず、それがある、

git log --oneline HEAD..8af39377 

はあなたのリストが表示されます。

--graph --decorateを追加する価値があります。

+0

これは後方だと思いますか? 8af39377はHEADの前に120コミットです。 HEAD..8af39377は、8af39377から到達可能なコミットであり、HEADから到達可能なコミットは除外されています。だからあなたは8af39377の後のものをここから除外しています。 – jbu

+0

私が言ったように、あなたのログ出力はこれと矛盾します: '8af39377'が最初に現れ、' HEAD'の祖先ではない(そうでなければ 'HEAD'が最初に来る) 「HEAD」が最初に来ただろう)。ところで、あなたの 'cut'はコミットIDを取得します。もしrevをリスティングしたいのであれば、' git rev-list'( 'git log's - といっても、他のリビジョンウォーキングコマンドの ')より多くのレーザーに焦点を当てたsire)または 'git log --pretty =%H'? – jthill

+0

あなたはopに話すことができませんでした。私はあなたがgit log commit1 commit2と思いますかと思っています。実際には、ドキュメントは少しばかげているようですが、私はcommit1がコミットとして扱われていると思います.2つはツリーとして扱われ、ルートツリーオブジェクトに解決されます – jbu

関連する問題