2010-11-21 12 views
1

を変更したとき、私はSHAのIDで行うれ、コミットメッセージの中から、他のコミットを参照したいが、私はまた、時々コミット以前に変更したいとのGitにコミットを参照します。私がコミットを変更すると、SHA IDが変更されます。コミットを一意に参照する別の方法はありますか?おかげはユニークな歴史は、私は問題を抱えている

答えて

2

これに対処するための自動的な方法はありません。おそらく何らかの時点でコミットを確定する(つまり、マージしてプッシュするとき)、その時点ですべてのSHA1が正しい場所を指していることを確認することです。自分でチェックすることができ

一つの方法は、SHA1sのメッセージ(例えばgit log --grep='[0-9a-f]{7})をコミットgrepし、与えられたSHA1は、そのメッセージにそれを言及コミットの祖先であるコミットを表しているかどうかをチェックすることです。あなたはフックからそのチェックを引き起こすこともできます。正確にどのフックがワークフローに依存しているか。私は、事前コミットまたはポストマージが可能であることを見ることができました。シングルコミット検証(プリコミットなど)では、実際にコミットメッセージだけをgrepする必要はありません。マージの場合、マージされているコミットのログをgrepしたいと思うでしょう。タグは、これに対処するにはどうすればよい

1

は、私が唯一の特定の方法は、タグを使用することだと思います。しかし、コミットを参照したいときはいつでもタグを作成するのは面倒です。たぶん相対参照(~5など)を使用して

は仕事ができるが、これは、あなたが削除した場合、分割または押しつぶされたコミットを破ります。

もう一つの可能​​性はない自分自身をコミット、ツリーのSHA1を参照するようになります。このようにして、コミットを変更しても、それらの背後にあるツリーは変更しなければ、参照は引き続き機能します。これの問題は、ツールがこれをサポートしていないということです。

+1

?彼らはコミットのSHA1を指しているので、前のコミットを変更した場合も同じことが起こります。 – Cascabel

+0

@ジェフロミ、そうです、私はそれを認識しませんでした。 – svick

関連する問題