サーチ…


構文

  • git merge another_branch [オプション]
  • git merge --abort

パラメーター

パラメータ詳細
-m マージコミットに含めるメッセージ
-v 冗長出力を表示する
--abort すべてのファイルを元の状態に戻そうとする
--ff-only マージコミットが必要なときに直ちに中止する
--no-ff マージコミットの作成を強制していなくても強制する
--no-commit マージが失敗し、結果の検査と調整ができなかった
--stat マージ完了後にdiffstatを表示する
-n / --no-stat diffstatを表示しない
--squash マージされた変更を持つ現在のブランチに対して1回のコミットを可能にする

あるブランチを別のブランチにマージする

git merge incomingBranch

これにより、現在のブランチにincomingBranchブランチがマージされます。たとえば、現在masterにいる場合は、 incomingBranchmasterにマージされます。

マージによっては競合が発生することがあります。このような場合は、 Automatic merge failed; fix conflicts and then commit the result.というメッセージが表示されますAutomatic merge failed; fix conflicts and then commit the result.競合するファイルを手動で編集するか、マージの試行を元に戻すには、次のコマンドを実行する必要があります。

git merge --abort

自動マージ

2つのブランチ上のコミットが矛盾しない場合、Gitはそれらを自動的にマージすることができます:

~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
 file_a | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

マージを中止する

マージを開始した後、マージを停止し、すべてをマージ前の状態に戻したい場合があります。 --abort

git merge --abort

マージの片側からのみ変更を保持する

マージの間に--oursまたは--theirsgit checkout--theirsて、ファイルのすべての変更をマージの一方または他方から取ることができます。

$ git checkout --ours   -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes

コミットでマージする

デフォルトの動作は、マージが早送りとして解決され、マージコミットを作成せずにブランチポインタのみを更新する場合です。解決するには--no-ffを使用します。

git merge <branch_name> --no-ff -m "<commit message>"

変更がマージされていないすべてのブランチを検索する

場合によっては、すでに変更がマスターにマージされているブランチを横に並べていることもあります。 masterと比較してユニークなコミットを持たないmasterではないすべてのブランチが検出されます。これは、PRがマスターにマージされた後に削除されなかったブランチを見つけるのに非常に便利です。

 for branch in $(git branch -r) ; do
   [ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
 done | sort -r


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow