サーチ…
構文
- 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
にいる場合は、 incomingBranch
がmaster
にマージされます。
マージによっては競合が発生することがあります。このような場合は、 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
または--theirs
をgit 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