1. ホーム
  2. git

[解決済み] あるコミットが他のコミットの子孫であるかどうかを判断するにはどうすればよいですか?

2022-04-25 13:01:23

質問

Git で、ブランチ内のあるコミットが他のコミットの子孫であるかどうかを判断するにはどうしたらよいですか?

どのように解決するのですか?

プログラム的に(スクリプトなどで)確認したい場合は、以下のようになります。 git merge-base A B と同じです。 git rev-parse --verify A (であれば、AはBから到達可能)、あるいは git rev-parse --verify B (その場合、BはAから到達可能です)。 git rev-parse は、コミット名からコミットSHA-1 / コミットIDへの変換に必要です。

使用方法 git rev-list のように VonCの回答 も可能です。

編集する。 最近のGitでは、このクエリを明示的にサポートしており、その形式は git merge-base --is-ancestor .


質問しているコミットの1つが ブランチチップ であれば git branch --contains <commit> または git branch --merged <commit> の方が、より良いノンプログラミングの解決策になるかもしれません。