私はずっと前にこの質問をしましたが、私はまだこの答えで〜と^が何を意味するのかわかりません:
たとえば、origin / masterなどのリモートブランチについて話している場合は、ローカルブランチの場合と同じように、〜と^を使用してブランチに関連する祖先コミットを参照できます。
違いは何ですか?
^
「(最初の)親」を意味します。~
似ていますが、引数として数字を取り、基本的に「の祖先」を意味します。したがって、たとえば:
HEAD = latest commit
HEAD^ = HEAD~1 = parent of latest commit
HEAD^^ = HEAD~2 = grandparent of latest commit
HEAD~100 = 100th ancestor of latest commit
マンページに記載されているように:
<rev>^, e.g. HEAD^, v1.5.1^0
リビジョン パラメータのサフィックス ^ は、そのコミット オブジェクトの最初の親を意味します。^<n>
は<n>
番目の親を意味します (つまり<rev>^
、 と同等です<rev>^1
)。[...]
<rev>~<n>, e.g. master~3
~<n>
リビジョン パラメータ のサフィックスは<n>
、最初の親のみに続く、名前付きコミット オブジェクトの第 2 世代の祖先であるコミット オブジェクトを意味します。つまり、 は と同等<rev>~3
です。<rev>^^^
<rev>^1^1^1
このドキュメントによると、チルダ (~) はコミットの線形祖先 (親、祖父母、曾祖父母) を参照し、キャレット (^) は複数の親を参照します。複数のマージ先祖がある場合、各マージ ソースが親になります。