2016-11-18 12 views
0

私はまだgitの中で自分のやり方を学んでいます。驚いたことにgitのマージとログメッセージ

> git checkout branch0 
> git merge branch1 

、それが行ってきました:マージする前に、gitのログは、私がbranch0に支社をマージしたかったので、私はmergeコマンドを発行してくれ

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

....のようなものを言っていましたヒッチなし。出力は次のようになりました。

Updating e57618a..9588d21 
Fast-forward 
src/file1.c       | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 
src/blah.h       | 15 +++- 
src/file2.c       | 2 - 
src/main.c       | 91 +++++++++++++++++------ 
... 

11 files changed, 811 insertions(+), 100 deletions(-) ... 

AFAICTはありません。私はgitのログコマンドを発行するときしかし、そこにこのマージの兆候は起こらなかった、と古いが支社にコミットされたログの最上部にまだある:

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

は、これは私が期待するべきである行動です?私は少なくともブランチがbranch0として表示されることを期待していました。 branch1を削除しようとするとどうなりますか?

+0

git statusは、branch1またはbranch0にいることを示していますか?そして、マージ後、早送りマージの行に沿って何かメッセージが出されましたか? –

+0

@JoseB git statusは私がbranch0にいると言っています。 gitのマージは「早送り」について何か言っていました。私は私の質問の編集でいくつかの詳細を追加しています。ありがとう。 –

答えて

2

あなたのコメントに基づいて、gitは単純な早送りマージを実行したようです。基本的には、branch1で1つ以上のコミットを行い、そのブランチをbranch0にマージしたので、branch1の最後のコミットを指すようにbranch0のポインタを単純に移動しました。

これは早送りマージです。明示的なマージを見たい人もいれば、マージコマンドを発行するときに--no-ffフラグを使う必要があります。

git bookから以下の図は、このことを説明するのに役立つことがあります。

gitのは(自分の場合やbranch0)早送りマージ分岐マスターを行い

two git branches before a fast-forward merge

は単にC3のコミットを指すように動きます。追加のマージコミットは作成されません。

branch1を削除すると、branch0がbranch1からの最新のコミットをまだ指しているため、何も失われません。以下のコマンドを発行することで確認することができます(branch0では)。

git branch --merged

それはあなたが削除することができた、支社を示すべきである:

git branch -d branch1

あなたはとにかく非マージされたブランチを削除しようとするとGitが警告を発行する、とあなたが持っているでしょう-D

+0

これは私がOKであることを意味しますか? branch1を削除するとどうなりますか?ありがとう。 –

+0

はい、問題ありません。branch1を削除すると、branch0がbranch1からの最新のコミットをまだ指しているので、何も失われません。 –

関連する問題