33

機能ブランチをメインブランチにマージした後、通常、デフォルトでマージコミットを実行する必要があります。ただし、このコミットでは、「マージブランチXXX」の代わりに、機能ブランチからの元のコミットメッセージを使用したいと思います。

どうすればいいですか?

4

5 に答える 5

81

-mパラメータをmergeコマンドに渡すだけです。

$ git merge other-branch -m "Commit Message"
于 2015-10-15T16:36:49.817 に答える
16

基本的に2つのオプションがあります。

簡単な解決策:マージせず
、メインブランチの上にブランチをリベースし、競合を解決してからマージします。履歴がまっすぐなので、早送りしてマージすることができます。これにより、マージコミットは作成されません。

git checkout feature
git rebase main
# Resolve conflict if there is
git checkout main
git merge feature

2番目のオプション:リベース-iマージ後(リモートにプッシュする
)に 履歴を編集できます。これは、リベースインタラクティブモードで管理できます。

git checkout main
git merge feature
#You merge and resolve conflict
git rebase -i <sha of the commit before the merge>

次に、コミットのリストを含むインタラクティブシェルに移動します。例:

pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
pick 2120f47 Add user form
pick 70c55e4 Quiz prototype system

あなたはただ追加する必要がありますsquashsの代わりにpick

pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
s 2120f47 Add user form
pick 70c55e4 Quiz prototype system

このコマンドは一緒に押しつぶされb8a0b83ます2120f47。次のステップは、両方のコミットメッセージを組み合わせたコミットテキストエディタです。元のメッセージのみを保持するように正しく編集するのはあなた次第です。

于 2013-02-21T16:05:56.030 に答える
7

コミットがすでに行われている場合は、コミットを修正するだけです。

コミットする前の場合はgit merge、以下の例のようなものを使用してください。

$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit

競合を解決する必要があるかもしれません。

このメソッドは自動コミットを回避し、すべてのファイルがインデックスに残されます。したがって、任意のコミットメッセージを使用してコードをコミットできます。

于 2016-07-29T08:32:25.360 に答える
4

マスターブランチとローカルブランチに異なるチェンジセットがある場合、gitはマージのための追加のコミットを自動的に作成します。このような余分なコミットが発生しないようにするには、マスターにマージする前に、ブランチ内のマスターをリベースできます。

$ git pull(in master which retrieves the new changes>
$ git checkout <local_branch>
$ git rebase master 
$ git checkout master
$ git merge local_branch.
于 2013-02-21T16:07:26.673 に答える
4

マージコミットを実行した後、私はそれを見つけました。修正コミット「gitci--amend」を追加して、コミットメッセージを変更できます。これは、私が要求したとおりに実行されます。私は自分の答えを正解として受け入れます。

Simon Boudriasとranendraは、別の方法でも効果的な関連する回答を提供しました。だから私はそれらに投票しました。

于 2013-02-22T18:31:14.763 に答える