9

git branch -a --contains <hash>を含むすべてのブランチを取得しhashます。私が欲しいのはですgit branch -a --no-contains <hash>。残念ながら、これを達成するためのコマンドはないようですので、解決策は次のようなものだと思います。

git branch -a | grep -v output of(git branch -a --contains)しかし、私のbashはその任務を果たせません。

コミットAがオンでコミットBがオンでないすべてのブランチを表示しますか?適用されるように見えますが、アプローチは必要以上に複雑に見えます。

上記を達成するための最良/最も簡単なアプローチは何ですか?

4

3 に答える 3

12

grep-F固定文字列に一致するオプションがあります。あなたがしていることに役立つでしょう。

git branch -a | grep -vF "$(git branch -a --contains <hash>)"

残念ながら、-F部分的に一致するブランチ名は除外されます。antakが示唆しているようcommに、代わりに、より信頼性の高い差分を使用できます。

git branch -a | sort | comm -3 - <(git branch -a --contains <hash> | sort)
于 2012-05-22T19:17:56.413 に答える
7

--no-containsフラグはGit2.13で追加されました。

于 2017-06-21T23:39:44.163 に答える
3

ブランチ名が部分的に一致すると、受け入れられた回答が不正になるため、この状況を処理するのは次のとおりです。

git branch -a | comm -3 - <(git branch -a --contains <hash>)

| sortcomm: file 1 is not in sorted order警告が邪魔になる場合は、両方のコマンドの最後に追加できます。ただし、2つの入力の順序は同じであるため、正しい結果を得るのにこれは必要ありません。

于 2015-11-27T02:50:43.547 に答える