実行前の状態
main ブランチで README.md を
このgit switch -q -c feature は、
ターミナル
git init -q -b main hello
cd hello
echo "# hello" > README.md
git add README.md
git commit -q -m "README を作る"
git switch -q -c feature
echo "print('hi')" > app.py
git add app.py
git commit -q -m "app.py を足す"
git switch -q main
echo "start" >> README.md
git commit -q -a -m "README に説明を足す"最小の例と結果
取り込む側の--no-edit は、
ターミナル
git merge --no-edit featureMerge made by the 'ort' strategy.
app.py | 1 +
1 file changed, 1 insertion(+)
create mode 100644 app.pyMerge made by the 'ort' strategyは、2 つの 履歴を まとめる コミット (マージコミット) を 作ったという 意味です。 app.py | 1 +は、取り込んだ 変更で 足された物です。
手元にFast-forward と出ます。
成功の確認
マージ後の
ターミナル
git log --oneline --graph* a1b2c3d Merge branch 'feature'
|\
| * 9f8e7d6 app.py を足す
* | 3c4d5e6 README に説明を足す
|/
* 1b2c3d4 README を作るターミナル
git status -sgit status -s に
衝突で止まったとき
同じ
ターミナル
echo "色は白" > color.txt
git add color.txt
git commit -q -m "色を白にする"
git switch -q -c blue
echo "色は青" > color.txt
git commit -q -a -m "色を青にする"
git switch -q main
echo "色は赤" > color.txt
git commit -q -a -m "色を赤にする"
git merge blueAuto-merging color.txt
CONFLICT (content): Merge conflict in color.txt
Automatic merge failed; fix conflicts and then commit the result.ターミナル
git status -sUU color.txtターミナル
cat color.txt<<<<<<< HEAD
色は赤
=======
色は青
>>>>>>> blueUU は、<<<<<<< から >>>>>>> までが
直さずに
ターミナル
git merge --abort
git status -s何も
構文と 主要オプション
| 書き方 | すること |
|---|---|
git merge <ブランチ名> | その |
git merge --no-edit <ブランチ名> | メッセージを |
git merge --no-ff <ブランチ名> | 前へ |
git merge --ff-only <ブランチ名> | 前へ |
git merge --abort | 衝突で |
失敗時の戻し方
衝突で止まっているとき
取り込みをgit merge --abort をgit merge の
衝突をgit add して、git commit でgit rebase --abort で、--abort とは
マージを
まだ push していなければ、ORIG_HEAD は、
ターミナル
git reset --hard ORIG_HEAD--hard は、git status で、
push したgit revert -m 1 <マージの番号> で
よくある疑問
Already up to date. と 出て、 何も 起きません
取り込もうとした
merge と rebase は、 どう 違いますか
merge は、
取り込む 向きを 間違えました
merge はgit switch main で main へgit merge feature をgit reset --hard ORIG_HEAD で
