9
29
リポジトリのクローン
cd
cd github
git clone https://github.com/appi-github/merge-sample.git
cd merge-sample
github merge-sample
ここがカレントディレクトリに
Slide 10
Slide 10 text
10
29
ブランチの作成
git branch knock origin/knock
main
HEAD
knock
ブランチの確認
git branch -vva
main
HEAD
origin/knock
origin/knock
origin/knockの指すコミットに
knockブランチを作成
Slide 11
Slide 11 text
11
29
差分確認
main
HEAD
knock
git diff knock
poetry.txt poetry.txt
コミット間を比較
ここに差分を検出
Slide 12
Slide 12 text
12
29
マージ main
HEAD
knock
衝突
git merge knock
マージの中断
git merge --abort
main
HEAD
knock
このプロセスでpoetry.txtが
どのように変化したか調べる
Slide 13
Slide 13 text
13
29
マージ
git merge knock main
HEAD
knock
衝突
衝突の解決とコミット
git add poetry.txt
git commit -m "knock"
potery.txtをエディタで修正
Slide 14
Slide 14 text
14
29
main
HEAD
knock
git log --all --graph --oneline
マージされた「歴史」を確認
Slide 15
Slide 15 text
15
29
リポジトリのクローン
cd
cd github
git clone https://github.com/appi-github/rebase-history-sample.git
cd rebase-history-sample
github rebase-history-sample
ここがカレントディレクトリに
20
29
リポジトリのクローン
cd
cd github
git clone https://github.com/appi-github/rebase-conflict-sample
cd rebase-conflict-sample
github rebase-conflict-sample
ここがカレントディレクトリに
Slide 21
Slide 21 text
21
29
main
HEAD branch
origin/branch
ブランチの準備
git switch -c branch origin/branch
origin/branchの指すコミットにbranchというブランチを作成し、
カレントブランチをそこへ移動
Slide 22
Slide 22 text
22
29
歴史の確認
git log --all --graph --oneline
main
HEAD
branch
m1 m2 m3
f1 f2 f3
Slide 23
Slide 23 text
23
29
リベースの実行
git rebase main
main
HEAD branch
Slide 24
Slide 24 text
24
29
main
m1 m2 m3
f1 f2 f3
f1’ f2’ f3’
状態の確認
git status
HEAD
HEADは「最後にリベースがうまくいったコミット」を指している
(detached HEAD)
Slide 25
Slide 25 text
25
29
main
m1 m2 m3
f1 f2 f3
f1’ f2’ f3’
HEAD
エディタで衝突状態にあるファイル「text1.txt」を修正し、保存する
Slide 26
Slide 26 text
26
29
解決をGitに伝える
git add text1.txt
git commit -m "f2"
main
m1 m2 m3
f1 f2 f3
f1’ f2’ f3’
HEAD
Gitが自動で作ることができなかった
このコミットを手動で作った
Slide 27
Slide 27 text
27
29
リベースの続行
git rebase --continue
main
m1 m2 m3 f1’ f2’ f3’
HEAD branch
リベースが最後まで実行され、detached HEAD状態が解消される
Slide 28
Slide 28 text
28
29
歴史の確認
git log --oneline --graph
main
m1 m2 m3 f1’ f2’ f3’
HEAD branch
もともと分岐していた歴史が一本道になり、
mainからbranchへfast-forwardマージが可能になった