2016-05-11 3 views
0

をマージ私が行うと: 1行のメッセージが

$ git checkout master 
$ git merge --squash my-feature-branch && git commit -m "" 

押しつぶさそれぞれからの完全なメッセージを含む、メッセージは非常に長ったらしいですコミット結果のコミット

Squashed commit of the following: 

commit ... 
Author: ... 
Date: ... 

    Commit message from the latest squashed commit 

commit ... 
Author: ... 
Date: ... 

    Commit message from the second-latest squashed commit 

    That is, the whole multi-line message unabridged. 

... 

はどのように行います

  • には、各押しつぶされたコミットのメッセージの最初の行が含まれています
  • コミットヘッダーなし(コミットハッシュ、作成者、日付)?

e.e.e. git log --onelineの出力と同じですが、コミットハッシュはありません。

--logオプションをgit mergeに与えると、違いはありません。

+0

通常、 'git merge --log --no-commit ...'はうまく動作します。 – user3159253

+0

@ user3159253これは普通のマージで、機能ブランチからマージされたコミットごとに別のコミットを作成します。私は多くのコミットを機能ブランチからマスターブランチの1つのコミットに変えるスカッシュコミットを試みています。 (この結果得られるコミットのコミット_メッセージは、ソースコミットのコミットメッセージの要約になるはずですが、 'git merge 'が主張しているものとは異なり、コミットの完全なログです) – Lassi

答えて

0

シェルの作品のこのビットは、それはかなりありません。

b=my-feature-branch 
git merge --squash "$b" 
git commit -m "$(git log --reverse --format='- %s' .."$b")" 

押しつぶさコミットは(それらが行われたために、すなわち自然に)早いから最新に記載されているとダッシュで始まります。

これはマージ競合にどのように対処しているのか分かりません。

+0

ソースコードgit 2.8.x)、 '--log'はコミットメッセージをフォーマットするときに'%s'指示文を使用するので、 '--log' *を使うだけで、 log'と 'merge.log'はデフォルトで30コミットの最大値になります)。これらのすべてが単にメッセージファイルをあらかじめ埋め込むことに注意してください。明示的な '-m'を使用すると、あなた自身の引数のためにあらかじめ埋められたファイルを無視します。 squash "merge"はコミットしないので、いくつかの '-m'オプションを指定していれば、' --log'がなぜあなたにとって奇妙な動作をしているのかが分かるかもしれません。そうでなければ、まあ、私は考えていません;-) – torek

関連する問題