2013-01-08 11 views
15

コミットする前にコミットのハッシュを知る方法はありますか?コミットする前にGITハッシュを知っていますか?

+0

コミットできず、ハッシュを取得してから、--softをリセットできない理由はありますか? –

+1

私はそれをやっていると思っていましたが、その代わりにこのプロセスをやる方法はありませんか? –

+0

いつも方法がありますが、それは体操のビットです。なぜあなたはハッシュを必要としますか? –

答えて

12

これが必要な理由は何ですか?コミットのハッシュを独自のコミットメッセージに入れることを考えていたら、それは不可能です(少なくとも、SHA1を壊さないと不可能です)。コミットメッセージは、ハッシュを生成するときに使用される部分の1つで、メッセージを変更しようとするとハッシュが変更されます。

いずれにしても、コミットする前にコミットのハッシュを見つけることは、実際にコミットすること、ハッシュを書き留めてからコミットを捨てることとは区別がつきません。その理由は、ハッシュがコミットオブジェクトを作成し、SHA1を通過させることによって生成されるからです。したがって、コミットせずにハッシュを見つけるには、実際にオブジェクトをディスクに書き込むことなく、基本的にコミットプロセスを手動で実行し、結果をSHA1で処理しなければなりません。それはむしろ実用的ではないだけでなく、全く無意味です。

+0

Subversionのように、GITにはそうする方法があると思いました(例えば、$ Revision $)。 –

+2

@MarceloLiberato:Subversionでは、作成しているコミットのリビジョン番号を予測するのは簡単です。 gitでは、文字通り不可能です(SHA1を何らかの形で破ることを提案しない限り)。 –

+0

「不可能」とは、「gitは方法を提供しないため」という意味ではありません。「この機能、期間を実装できない可能性があるため」という意味です。 –

9

コミットハッシュはコミット時間に依存します。

同じ変更、同じ親、同じ作成者、コミットメッセージで同じコミットで2回コミットした場合、同じハッシュを取得します。それ以外の場合、ハッシュは異なるはずです。

関連する問題