機能ブランチをメインブランチにマージした後、通常、デフォルトでマージコミットを実行する必要があります。ただし、このコミットでは、「マージブランチXXX」の代わりに、機能ブランチからの元のコミットメッセージを使用したいと思います。
どうすればいいですか?
機能ブランチをメインブランチにマージした後、通常、デフォルトでマージコミットを実行する必要があります。ただし、このコミットでは、「マージブランチXXX」の代わりに、機能ブランチからの元のコミットメッセージを使用したいと思います。
どうすればいいですか?
-m
パラメータをmerge
コマンドに渡すだけです。
$ git merge other-branch -m "Commit Message"
基本的に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
あなたはただ追加する必要がありますsquash
:s
の代わりにpick
:
pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
s 2120f47 Add user form
pick 70c55e4 Quiz prototype system
このコマンドは一緒に押しつぶされb8a0b83
ます2120f47
。次のステップは、両方のコミットメッセージを組み合わせたコミットテキストエディタです。元のメッセージのみを保持するように正しく編集するのはあなた次第です。
コミットがすでに行われている場合は、コミットを修正するだけです。
コミットする前の場合はgit merge
、以下の例のようなものを使用してください。
$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit
競合を解決する必要があるかもしれません。
このメソッドは自動コミットを回避し、すべてのファイルがインデックスに残されます。したがって、任意のコミットメッセージを使用してコードをコミットできます。
マスターブランチとローカルブランチに異なるチェンジセットがある場合、gitはマージのための追加のコミットを自動的に作成します。このような余分なコミットが発生しないようにするには、マスターにマージする前に、ブランチ内のマスターをリベースできます。
$ git pull(in master which retrieves the new changes>
$ git checkout <local_branch>
$ git rebase master
$ git checkout master
$ git merge local_branch.
マージコミットを実行した後、私はそれを見つけました。修正コミット「gitci--amend」を追加して、コミットメッセージを変更できます。これは、私が要求したとおりに実行されます。私は自分の答えを正解として受け入れます。
Simon Boudriasとranendraは、別の方法でも効果的な関連する回答を提供しました。だから私はそれらに投票しました。