Skip to content

Instantly share code, notes, and snippets.

@hakobe
Created February 4, 2009 12:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hakobe/58075 to your computer and use it in GitHub Desktop.
Save hakobe/58075 to your computer and use it in GitHub Desktop.
#!/bin/sh
# 新しいリポジトリをつくる
mkdir merge_test
cd merge_test
git init
# puuファイルを作成
echo 'puu' > puu
git add .
git commit -m 'initial commit'
# experimental ブランチを作成してex1を追加
git branch experimental
git checkout experimental
echo "\nex1" >> puu
git add .
git commit -m 'ex1'
# $ cat puu
# puu
#
# ex1
#
# master ブランチでmaster1を追加
git checkout master
echo "\nmaster1" >> puu
git add .
git commit -m 'master1'
# $ cat puu
# puu
#
# master1
#
# experimental ブランチでmasterをmerge
git checkout experimental
git merge master; # experimental が masterを追従
cat << END > puu # confilictを解決
puu
ex1
master1
END
git add .
git commit -m 'Merged'
# vimでpuuの中身を以下のように編集してconfilictを解決することにする
# $ cat puu
# puu
#
# ex1
# master1
#
# ここの段階でexperimentalの最後のコミットはmasterでの変更
# を含んだmergeコミットになる
# => experimental ブランチのコミット内にmasterで行われたの変更がある
git --no-pager diff 'HEAD^..HEAD'
# diff --git a/puu b/puu
# index 2fea8c8..c191da3 100644
# --- a/puu
# +++ b/puu
# @@ -1,3 +1,4 @@
# puu
#
# ex1
# +master1
# masterでpuuをはじめの状態にもどしてコミット
git checkout master
echo "puu" > puu
git add .
git commit -m 'remake puu'
# master で experimental ブランチをmerge
git merge experimental
cat puu
# 理想のpuu => experimental で行われた変更のみがmergeされる
# $ cat puu
# puu
# <<<<<<< HEAD:puu
# =======
#
# ex1
# >>>>>>> experimental:puu
# 現実のpuu => experimentalで行われた変更以外にも
# master でおこなわれた変更であるmaster1が含まれる
# $ cat puu
# puu
# <<<<<<< HEAD:puu
# =======
#
# ex1
# master1
# >>>>>>> experimental:puu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment