Gitを使用して、1つの特定のブランチに*のみ*存在し、他のブランチには存在しないすべてのコミットを表示します


86

ブランチがある場合、そのブランチにのみ存在するコミットのリストを表示したいと思います。でこの質問、私たちは1本の枝上にあるではなく、1つ以上の他のブランチを指定したコミットを確認する方法について説明します。

これは少し異なります。どのコミットが1つのブランチにあり他のブランチにはないを確認したいと思います。

ユースケースは、一部のブランチをマージするだけで、直接コミットしないブランチ戦略です。これは、「マージのみ」のブランチで直接コミットが行われたかどうかを確認するために使用されます。

編集:以下は、テストするダミーのgitリポジトリを設定する手順です。

git init
echo foo1 >> foo.txt
git add foo.txt
git commit -am "initial valid commit"
git checkout -b merge-only
echo bar >> bar.txt
git add bar.txt
git commit -am "bad commit directly on merge-only"
git checkout master
echo foo2 >> foo.txt 
git commit -am "2nd valid commit on master"
git checkout merge-only 
git merge master

マージのみのブランチで直接行われた、「マージのみで直接不正なコミット」というメッセージが表示されたコミットのみが表示されます。


1
この質問は、すべてのマージ元ブランチが現在リポジトリで利用可能であり、完全にマージされた後に削除されることはなく、早送りでマージされることはないことを前提としています。何かが足りない場合はお知らせください。ただし、これは許可されたマージ元ブランチの比較的少数のセットでのみ機能するようgit log ^branch1 ^branch2 merge-only-branchです。構文を使用しないのはなぜですか。
Karl Bielefeldt

1
には、git log ^branch1 ^branch2 merge-only-branchすべてのブランチをリストする必要があります。これは、bash / grepを巧妙に使用することで回避できます(以下の私の回答を参照)が、gitにこれに対する組み込みのサポートがあることを望んでいます。すべてのmerge-fromブランチがリモートであると想定しているのは正しいです(ローカルのみが他の開発者には存在しないのと同じくらい良いです)。を使用--no-mergesすると、マージされてから元のマージ元ブランチが削除されたコミットが省略されるため、マージ元ブランチは、非マージ専用ブランチ(つまりマスター)にマージされるまで保持されると想定されます。
jimmyorr 2011

回答:


75

このエレガントなソリューションを見つけました

git log --first-parent --no-merges

もちろん、あなたの例では、最初のコミットはまだ表示されます。

最初のコミットがまだ表示されるため、この回答は質問に正確に回答しません。一方、ここに来る多くの人々は彼らが探している答えを見つけているようです。


1
シンプル、効果的、最高。
Zabba 2012年

1
マスターの最初のコミットはまだ表示されるので、これは質問に答えません。
jimmyorr 2013

6
これだけでは、「そのブランチにのみ存在するコミット」条件を満たしませんinitial valid commit。これは、merge-onlymasterブランチの両方の一部であるを示しています。ただし、最後に現在のブランチ名を入力し、その後に現在のブランチの派生元であることがわかっている^プレフィックス付きのブランチ名を付けると、問題の半分が解決されます(マージされたものを除く)。例:git log --first-parent --no-merges merge-only ^master
Slipp D. Thompson 2013

13
なぜこれがそれほど賛成されているのかはわかりませんが、質問にはまったく関係がないようです。それは確かにポスターが探していた情報を提供しません。
Chris Rasys 2014年

2
この答えは完璧ではないかもしれません。しかし、それは単純で、確かにある程度は機能します。:つまり、フィルタのすべてのコミットが特定のブランチに属している-私はそれが便利なブランチ名を追加するために見つけるgit log --first-parent --no-merges | grep <branch_name>
ARTM

29

私の親愛なる友人Redmumbaの礼儀:

git log --no-merges origin/merge-only \
    --not $(git for-each-ref --format="%(refname)" refs/remotes/origin |
    grep -Fv refs/remotes/origin/merge-only)

...origin/merge-onlyリモートマージのみのブランチ名はどこにありますか。ローカルのみのgitリポジトリで作業している場合refs/remotes/originrefs/heads、に置き換え、リモートブランチ名origin/merge-onlyをローカルブランチ名merge-onlyに置き換えます。

git log --no-merges merge-only \
    --not $(git for-each-ref --format="%(refname)" refs/heads |
    grep -Fv refs/heads/merge-only)

2
他の誰かがgitだけを使用してgrepのないソリューションを提供できることを望んでいますが、そうでない場合、これはかなりエレガントに感じます。
jimmyorr 2011

1
はい、エレガントです。git for-each-ref元のすべての参照名を一覧表示しgrep -v、マージのみのブランチを省略するために使用します。 オプションをgit log取り、--notすべての参照のリストを渡します(マージのみのブランチを除く)。問題に対するよりエレガントな答えがあれば、それを聞いてみましょう。
jimmyorr 2011

2
ああ、それが最もエレガントな答えだと確信しています。私はそれが本当の優雅さのために少し「言葉遣い/複雑」であると主張しているだけです。:-)あなたのアプローチを軽蔑するつもりはありませんでした、サー!
クリスK

1
コマンドの末尾/*は、git for-each-refs既存のファイルと一致せず、持っていないfailglobnullglob設定されていないことに依存しています(bashオプション、他のシェルは異なります)。アスタリスクを引用符で囲むかエスケープするか、末尾を/*オフのままにする必要があります(git for-each-refパターンは「最初からスラッシュまで」一致する可能性があります)。おそらくgrep -Fv refs/remotes/origin/foorefs/heads/foo)を使用して、どの参照が削除されるかをより厳密にします。
クリスジョンセン2011

3
あるブランチに存在し、別のブランチには存在しないコミットを確認したい場合は、簡略化できますgit log --no-merges B1 --not B2。ここで、B1は関心のあるブランチであり、B2はB1と比較するブランチです。B1とB2はどちらもローカルブランチまたはリモートブランチにすることができるため、を指定することgit log --no-merges master --not origin/masterも、2つのリモートブランチを指定することもできます。
mr.b 2012年

21
git log origin/dev..HEAD

これにより、ブランチで行われたすべてのコミットが表示されます。


2
@Prakashorigin/branchNameはリモートブランチのヘッドをHEAD指し、そのブランチの最後のローカルコミットのcommitidを指します。したがって、gitpushを使用した場合は機能しません。
バーラト2016

これを使用して、別のローカルブランチを比較できます。--no-mergesフラグは、OPの元の質問に対処するのにも役立つ場合があります。
ポールホイップ

15

@Prakashの回答は機能します。明確にするために...

git checkout feature-branch
git log master..HEAD

機能ブランチのコミットをリストしますが、アップストリームブランチ(通常はマスター)はリストしません。


12

多分これは役立つかもしれません:

gitshow-branch


2
これは理論的には質問に答えることができますが、ここに答えの本質的な部分を含め、参照用のリンクを提供することが望ましいでしょう
ウラジミールパンテレエフ2016年

これは実際には非常に役立ちます。より詳細な例といくつかの関連する回答については、stackoverflow.com / a / 7623339/874188を参照してください。
トリプリー2016年

7

これを試して:

git rev-list --all --not $(git rev-list --all ^branch)

基本的git rev-list --all ^branchに、ブランチにないすべてのリビジョンを取得してから、リポジトリ内のすべてのリビジョンを取得し、ブランチのみのリビジョンである前のリストを減算します。

@Brianのコメントの後:

git rev-listのドキュメントから:

List commits that are reachable by following the parent links from the given commit(s)

したがって、git rev-list AAがコミットであるようなコマンドは、Aを含むAから到達可能なコミットをリストします。

それを念頭に置いて、

git rev-list --all ^A

Aから到達できないコミットが一覧表示されます

したがってgit rev-list --all ^branch、ブランチの先端から到達できないすべてのコミットが一覧表示されます。これにより、ブランチ内のすべてのコミット、つまり他のブランチにのみ存在するコミットが削除されます。

さあ、 git rev-list --all --not $(git rev-list --all ^branch)

これは次のようになります git rev-list --all --not {commits only in other branches}

だから私たちはからall到達できないものをリストしたいall commits only in other branches

これは、ブランチにのみ存在するコミットのセットです。簡単な例を見てみましょう。

             master

             |

A------------B

  \

   \

    C--------D--------E

                      |

                      branch

ここでの目標は、他のブランチにはないコミットであるDとEを取得することです。

git rev-list --all ^branch Bだけを与える

さて、git rev-list --all --not B私たちが思いついたのはそれです。これもgit rev-list -all ^B-Bから到達できないすべてのコミットが必要です。この場合はDとEです。これが必要です。

これがコマンドが正しく機能する方法を説明することを願っています。

コメント後に編集:

git init
echo foo1 >> foo.txt
git add foo.txt
git commit -am "initial valid commit"
git checkout -b merge-only
echo bar >> bar.txt
git add bar.txt
git commit -am "bad commit directly on merge-only"
git checkout master
echo foo2 >> foo.txt 
git commit -am "2nd valid commit on master"

上記の手順を実行した後、実行すると、git rev-list --all --not $(git rev-list --all ^merge-only)探していたコミットが取得されます"bad commit directly on merge-only"

ただし、ステップの最後のステップを実行 git merge masterすると、コマンドは期待される出力を提供しません。マスターの1つの余分なコミットもマージのみにマージされているため、現時点ではマージのみに存在しないコミットはありません。したがってgit rev-list --all ^branch、空の結果git rev-list -all --not $(git rev-list --all ^branch)が得られるため、すべてのコミットがマージのみで行われます。


1
うーん...理由はわかりませんが、これはうまくいきません。コマンドの出力をパイプ処理すると、xargs -L 1 -t git branch -a --contains多くの誤検知(実際には他のブランチにあるコミット)が表示されます。ありとなしで試しました--no-merges。答えてくれてありがとう!
jimmyorr 2011

ダミーのgitリポジトリで確認できる限り、問題なく動作しているようです。
manojlds 2011

ダミーのgitリポジトリを作成する手順を追加して、回答の問題を実証できるようにしました。
jimmyorr 2011

ああ、おっと。私がずっとそれを考える前にこれを賛成した。git rev-list --all ^branchにないすべてのコミットを提供しますbranch。あなたは、リストからその減算されている中をbranch、しかし、定義上、含まれbranchていないすべてのコミットは含まれていないbranchため、何も減算していません。jimmyorrが探しているのは、存在するbranchが存在しないコミットmaster、または他のブランチです。にないコミットを差し引く必要はありませんbranch。他のブランチにあるコミットを差し引く必要があります。
ブライアンキャンベル

1
@manojlds "(すべてのリビジョン)-(ブランチにないすべてのリビジョン)=ブランチのリビジョン。" はい、それはのすべてのリビジョンを取得するbranchために機能しgit rev-list branchますが、そうします。あなたはgit rev-list branchもっと複雑な(そして遅い)方法で書いているだけです。branch 他のブランチにないすべてのコミットを見つける方法である質問に答えることは機能しません。
ブライアンキャンベル

2

受け入れられた回答の別のバリエーション、 master

git log origin/master --not $(git branch -a | grep -Fv master)

マスター以外のブランチで発生するすべてのコミットをフィルタリングします。


0

これは正確には本当の答えではありませんが、フォーマットへのアクセスと多くのスペースが必要です。私が2つの最良の答えと考えるものの背後にある理論を説明しようと思います:受け入れられたもの(少なくとも現在)トップランクのものです。しかし実際には、彼らはさまざまな質問に答えます。

Gitでのコミットは、一度に複数のブランチで「オン」になることがよくあります。確かに、それは質問が何であるかについての多くです。与えられた:

...--F--G--H   <-- master
         \
          I--J   <-- develop

大文字が実際のGitハッシュIDを表す場合、出力でコミットのみHまたはコミットI-Jのみを検索することがよくありgit logます。までのコミットG両方のブランチにあるので、それらを除外したいと思います。

(注このように描かれたグラフに、新しいコミットは右の方にあること。名前は、単一の一番右がその行にコミットを選択し、それらのコミットのそれぞれは、その左にコミットしているコミット、親、があります。の親HですG、およびの親はJですI。の親IG再びです。の親GF、でFあり、ここには表示されていない親があります。これは、の一部です。...セクション。)

この特に単純なケースでは、次のものを使用できます。

git log master..develop    # note: two dots

表示するにはI-J、または:

git log develop..master    # note: two dots

表示Hのみ。2つのドットの後の右側の名前は、Gitに次のように伝えます。はい、これらはコミットします。2つのドットの前の左側の名前は、Gitに次ように伝えます。いいえ、これらのコミットではありません。Gitは最後から始まります—コミット時Hまたはcommit)逆方向にJ機能ます。これについての(多くの)詳細については、Think Like(a)Gitを参照してください。

元の質問の言い方では、目的は、から到達可能なコミットを見つけることです。ある特定の名前が、同じ一般的なカテゴリの他の名前かられます。つまり、より複雑なグラフがある場合:

               O--P   <-- name5
              /
             N   <-- name4
            /
...--F--G--H--I---M   <-- name1
         \       /
          J-----K   <-- name2
           \
            L   <-- name3

name4またはなどのこれらの名前の1つを選択して、次のname3ように尋ねることができます。その名前ではどのコミットを見つけることができますが、他の名前では見つけることができませんか? 私たちが選ぶならname3、答えはコミットLです。を選択したname4場合、答えはコミットではありません。name4名前はコミットですNが、コミットNはで開始しname5て逆方向に作業することで見つけることができます。

受け入れられた回答は、ブランチ名ではなくリモートトラッキング名で機能しorigin/merge-only、選択した名前として1つ(スペルト小麦)を指定して、その名前空間内の他のすべての名前を確認できます。また、マージの表示を回避name1します。「興味深い名前」として選択し、name1他の名前ではなく到達可能なコミットを表示すると、マージコミットMと通常のコミットが表示されIます。

最も人気のある答えはまったく異なります。これは、グラフをコミットトラバースに関するすべてだせずに、次の両足、およびマージのを示すことなく、コミットのいずれかのあるマージを。たとえば、で始まるname1場合、表示されませんM(マージです)が、マージの最初のMがcommitIであると仮定すると、commitJK。も調べません。私たちは、コミット示す終わるだろうI、ともコミットHGF、など、いずれもこれらのマージコミットしていると、すべてがで開始することにより到達可能Mと後方作業だけ訪れる最初の各マージの親がコミット。

最も人気のある答えは、たとえば、masterいつ見るのに非常に適していますmasterマージのみのブランチになるのかを。すべての「実際の作業」がサイドブランチで行われmaster、その後にマージされた場合、次のようなパターンになります。

I---------M---------N   <-- master
 \       / \       /
  o--o--o   o--o--o

ここで、文字名のないすべてのoコミットは通常の(非マージ)コミットでありM、およびNはマージコミットです。コミットIは最初のコミットです。これまでに行われた最初のコミットであり、マージコミットではないマスター上にある必要がある唯一のコミットです。場合git log --first-parent --no-merges masterのショーは、任意のコミット以外の Iような状況になります。

I---------M----*----N   <-- master
 \       / \       /
  o--o--o   o--o--o

コミットを見たい場所 *master一部の機能ブランチをマージするのではなく、で直接行われた。

要するに、人気のある答えは見るのに最適です masterいつmasterマージのみが意図されているかのに最適ですが、他の状況にはそれほど適していません。 受け入れられた答えは、これらの他の状況で機能します。

リモートトラッキングの名前は次のようなものですか origin/master ブランチの名のですか?

Gitのいくつかの部分はそうではないと言います:

git checkout master
...
git status

言う on branch masterが:

git checkout origin/master
...
git status

と言いHEAD detached at origin/masterます。私はgit checkout/に同意することを好みgit switchます:でorigin/masterはありませんブランチ名であなたがそれに「乗る」ことができないので。

受け入れられた回答は、リモート追跡名を使用していますorigin/*を「ブランチ名」として。

git log --no-merges origin/merge-only \
    --not $(git for-each-ref --format="%(refname)" refs/remotes/origin |
    grep -Fv refs/remotes/origin/merge-only)

を呼び出す中央の行 git for-each-ref、名前の付いたリモートのリモート追跡名を繰り返し処理し。origin

これは元の問題に良い解決策である理由は、私たちがここに興味を持っているということである誰かの支店名ではなく、私たちのブランチ名。しかし、それはブランチを以外のものとして定義したことを意味します私たちのブランチ名。それは問題ありません。これを行うときは、これを行っていることに注意してください。

git log コミットグラフの一部をトラバースします

ここで私たちが本当に探しているのは、私がダグレットと呼んでいる一連のことです。「ブランチ」とは正確にはどういう意味ですか?を参照してください つまり、私たちは探していますコミットグラフ全体のサブセット内のフラグメントをます

Gitに、のようなブランチ名、のようなmasterタグ名v2.1、またはのようなリモートトラッキング名を見てもらうときはいつでも、origin/masterGitにそのコミット、そのコミットから取得できるすべてのコミットについて教えてもらいたいと思う傾向があります。 、および逆方向に作業します。

数学では、これはグラフのウォーキングと呼ばれます。Gitのコミットグラフは有向非巡回グラフまたはDAGであり、この種のグラフは特に歩行に適しています。このようなグラフを歩くときは、使用されているパスを介して到達可能な各グラフの頂点にアクセスします。Gitグラフの頂点はコミットであり、エッジは円弧(一方向のリンク)であり、各子から各親に移動します。(これはThink Like(a)Gitが登場します。アークの一方向の性質は、Gitが子から親へと逆方向に機能する必要があることを意味します。)

グラフ・ウォーキング用の2つのメインのGitコマンドがあるgit loggit rev-list。これらのコマンドは非常に似ており、実際にはほとんど同じソースファイルから構築されていますが、出力は異なります。git log人間が読み取るgit rev-listための出力を生成し、他のGitプログラムが読み取るための出力を生成します。1 どちらのコマンドも、この種のグラフウォークを実行します。

彼らが行うグラフウォークは具体的には次のとおりです。 です。開始点コミットのセット(おそらく1つのコミット、ハッシュIDの束、ハッシュIDに解決される名前の束)を指定して、グラフをウォークし、コミットにアクセスします。特定のようなディレクティブ、--notまたはプレフィックス^、または--ancestry-path、または--first-parent、修正グラフ徒歩何らかの方法でを。

グラフウォークを行うとき、各コミットにアクセスします。ただし、ウォークされたコミットの選択されたサブセットのみを出力します印刷をコミットするグラフウォーキングコードなどのディレクティブまたは指示--no-merges--before <date>

この訪問を行うために、一度に1つのコミットで、これら2つのコマンドは優先キューを使用しますgit logまたはgit rev-listを実行し、それにいくつかの開始点コミットを与えます。それらのコミットを優先キューに入れます。たとえば、単純なもの:

git log master

名前masterを生のハッシュIDに変換し、その1つのハッシュIDをキューに入れます。または:

git log master develop

両方の名前をハッシュIDに変換し、これらが2つの異なるハッシュIDであると仮定して、両方をキューに入れます。

このキュー内のコミットの優先度は、さらに多くの引数によって決定されます。たとえば、引数--author-date-ordergit logまたはgit rev-list使用することを著者はむしろコミッタのタイムスタンプよりも、タイムスタンプを。デフォルトでは、コミッターのタイムスタンプを使用し、日付ごとに最新のコミット(数値の日付が最も高いコミット)を選択します。したがって、でmaster develop、これらが2つの異なるコミットに解決されると仮定すると、Gitはどちらが後で来たかを表示しますそれがキューの先頭になりますので、最初に。

いずれにせよ、リビジョンウォーキングコードはループで実行されるようになりました。

  • キューにコミットがある間:
    • 最初のキューエントリを削除します。
    • このコミットを印刷するかどうかを決定します。たとえば、--no-merges:マージコミットの場合は何も出力しません。--before:日付が指定時刻より前でない場合は何も印刷しません。印刷抑制されていない場合、コミットを印刷します。git logします。for、ログを表示します。の場合git rev-list、ハッシュIDを出力します。
    • このコミットのコミットの一部またはすべてをキューに入れます(現在そこになく、まだアクセスされていない場合2)。通常のデフォルトでは、すべての親を入力します。を使用--first-parentすると、各マージの最初の親を除くすべてが抑制されます。

(両方ともgit log親の書き換えの有無にかかわらず、履歴の簡略化git rev-list行うことができますこの時点でますが、ここではスキップします。)

マージコミットがない場合に開始しHEADて逆方向作業するような単純なチェーンの場合、キューには常にループの先頭に1つのコミットがあります。コミットが1つあるので、それをポップして印刷し、その(単一の)親をキューに入れて再び回り、最初のコミットに到達するか、ユーザーが飽きるまでチェーンを逆方向にたどります。git log出力終了プログラム。この場合、どの順序オプションも重要ではありません。表示するコミットは1つだけです。

マージがあり、両方の親(マージの両方の「レッグ」)に従う場合、git logまたはgit rev-list複数の開始コミットを指定する場合、並べ替えオプションが重要になります。

最後に、コミット指定子の効果--notまたはその^前を検討します。これらには、それらを書くためのいくつかの方法があります。

git log master --not develop

または:

git log ^develop master

または:

git log develop..master

すべて同じことを意味します。これ--not^、複数の名前に適用されることを除いて、プレフィックスに似ています。

git log ^branch1 ^branch2 branch3

ブランチ1ではなく、ブランチ2ではなく、ブランチ3ではないことを意味します。だが:

git log --not branch1 branch2 branch3

、branch1、branch2、branch3ではないことを意味し、1秒--notを使用してオフにする必要があります。

git log --not branch1 branch2 --not branch3

これは少し厄介です。2つの「not」ディレクティブはXORを介して結合されるため、本当に必要な場合は、次のように記述できます。

git log --not branch1 branch2 ^branch3

意味しない支社、ないBRANCH2を、branch3はい、あなたがしたい場合は難読化

これらはすべて、グラフウォークに影響を与えることによって機能します。通りgit loggit rev-listグラフを歩く、それは確かになりませんいずれかの任意のから到達可能であることをコミットプライオリティキューに入れるために否定参照。(実際、これらはセットアップの開始にも影響します。否定されたコミットは、コマンドラインから直接優先キューに入れることができないgit log master ^masterため、たとえば何も表示されません。)

gitrevisionsのドキュメントで説明されているすべての凝った構文はこれを利用しており、を呼び出すだけでこれを公開できますgit rev-parse。例えば:

$ git rev-parse origin/pu...origin/master     # note: three dots
b34789c0b0d3b137f0bb516b417bd8d75e0cb306
fc307aa3771ece59e174157510c6db6f0d4b40ec
^b34789c0b0d3b137f0bb516b417bd8d75e0cb306

3ドットの構文は、左側または右側から到達可能なコミットを意味しますが、両方から到達可能なコミットは除外します。この場合、origin/masterコミット b34789c0b、、自体はorigin/pufc307aa37...)から到達可能であるため、origin/masterハッシュは2回表示され、1回は否定が表示されますが、実際には、Gitは2つの正の参照(2つの否定されていないハッシュID)を入力することで3ドット構文を実現します。によって表される1つの否定的なもの^接頭辞。

同様に:

$ git rev-parse master^^@
2c42fb76531f4565b5434e46102e6d85a0861738
2f0a093dd640e0dad0b261dae2427f2541b5426c

^@構文手段与えられたすべての親がコミット、およびmaster^自体ブランチ名が選択したコミットの最初の親はmaster、それが両親を持っているので、マージコミット-is。これらは2人の親です。そして:

$ git rev-parse master^^!
0b07eecf6ed9334f09d6624732a4af2da03e38eb
^2c42fb76531f4565b5434e46102e6d85a0861738
^2f0a093dd640e0dad0b261dae2427f2541b5426c

^!接尾手段は、自分自身をコミットしていないが、その親のどれ。この場合、master^0b07eecf6...です。^@接尾辞が付いた両方の親をすでに見ました。ここに再びありますが、今回は否定されました。


1多くのGitプログラムは文字通り実行されますgit rev-listさまざまなオプションでれ、その出力を読み取って、使用するコミットやその他のGitオブジェクトを認識します。

2グラフは非循環であるため、まだアクセスされていないことを保証できます。制約を追加すると、すべての子を優先度に表示する前に親を表示しないようにします。 --date-order--author-date-order、そして--topo-orderこの制約を追加します。デフォルトのソート順(名前はありません)にはありません。コミットのタイムスタンプが厄介な場合(たとえば、クロックがオフになっているコンピューターによって「将来」にコミットが行われた場合)、これにより、出力が奇妙に見える場合があります。


あなたがこれまでにそれを成し遂げたならば、あなたは今について多くを知っています git log

概要:

  • git log グラフの一部またはすべてを歩きながら、選択したコミットを表示することです。
  • --no-merges引数には、いくつかのコミットを示す、受け入れられ、現在トップランクの答えを抑制し、両方で見つかっているが歩いたし。
  • --first-parent現在トップランクの回答からの議論は、歩行を抑制しますは、グラフウォーク自体の間にグラフの一部をするます。
  • --not受け入れられた回答で使用されているコマンドライン引数のプレフィックスは、最初からグラフの一部にアクセスすることをまったく抑制します。

これらの機能を使用して、2つの異なる質問に対する好きな答えを得ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.