2

ブランチが完全にマージされていない場合、git diff で何らかの出力が得られるべきではありませんか? 次の動作はどのように説明できますか。

$ git branch
foo
* master

$ git diff master..foo

$ git br -d foo
error: The branch 'foo' is not fully merged.
If you are sure you want to delete it, run 'git branch -D foo'.

では、マスターにまだマージしていない foo で行われた作業をどのように確認できますか?

4

4 に答える 4

2
git log master..foo

マスターではなく foo にあるすべてのコミットが表示されます。

Git diff 自体は、実際に追跡されたファイルの違いのみを表示しますが、これは履歴とは異なります。たとえば、foo には、後で元に戻されたいくつかの変更が含まれている場合があります。

于 2012-07-17T21:36:10.670 に答える
1

2 つのブランチが異なっていても、内容がまったく同じである可能性があります。これは、異なるコミット メッセージ、タイム スタンプ、作成者など、他の違いが存在する可能性があるためです。これらはすべて、コミットが同等かどうかを判断するために git が使用する SHA1 ハッシュに寄与します。

于 2012-07-17T23:24:29.263 に答える
0

実際のコミットを確認するには、diff の代わりにgit logor (スクリプトの場合)を使用します。git rev-list

ただし、そうは言っても、2 の間の共通のコミット以降、master で foo とまったく同じ作業を行っていない限り、diff コマンドは違いを示しているはずです。

すべてのブランチがどのようにリンクされているかをすばやく確認できます

git --log --one-line --decorate --all

また

gitk --all

それ以外の場合は、上記の例で置き換え--allて、表示したい履歴を指定してください。foo master

一度あなた

git merge foo

あなたはできるでしょう

git branch -d foo
于 2012-07-17T23:20:56.760 に答える
0

あなたはおそらくgit show-branchコマンドを探しています。

git show-branch master foomasterにないfooのすべてのコミットと、 fooにないmasterのすべてのコミットをリストします。

出力形式は最初は少し混乱する可能性があるため、man ページの出力セクションを読む価値があります。

于 2012-07-17T23:33:47.323 に答える