Git 単に時系列順にバージョンを管理するだけでなく、別々 時間軸 バージョンを管理できる。 さらにそれらを統合することができる。 別々 時間軸 ことを branch と呼 、それらを統合することを merge と言う。 こ merge ができる で、branchを分けて独立に進めることができる。 29 shumon.fujita 元バージョン A A’ 元バージョンに A A’ B B’ を足したも B B’
他 ブランチに追従するとき 例え developブランチで作業している間にmasterが進んでコンフリクトしたとする ここでdevelopをmasterにrebaseすると…… 105 first commit second commit work 1 Conflict! develop master
他 ブランチに追従するとき 例え developブランチで作業している間にmasterが進んでコンフリクトしたとする ここでdevelopをmasterにrebaseすると……こうなる 106 first commit second commit work 1 develop master work 1 develop
他 ブランチに追従するとき 例え developブランチで作業している間にmasterが進んでコンフリクトしたとする ここでdevelopをmasterにrebaseすると……こうなる こうなれ 無事マージできる 107 first commit second commit work 1 develop work 1 develop merged master
複数 コミットを1つにまとめる例 117 1 pick 2ff810a 2st commit 2 pick 80e4e22 3rd commit 3 pick 6bb05cb 4th commit 4 5 # Rebase 17c2008..6bb05cb onto 17c2008 (3 commands) 6 # 7 # Commands: 8 # p, pick <commit> = use commit 9 # r, reword <commit> = use commit, but edit the commit message 10 # e, edit <commit> = use commit, but stop for amending 11 # s, squash <commit> = use commit, but meld into previous commit 12 # f, fixup <commit> = like "squash", but discard this commit's log message 13 # x, exec <command> = run command (the rest of the line) using shell 14 # b, break = stop here (continue rebase later with 'git rebase --continue') 15 # d, drop <commit> = remove commit 16 # l, label <label> = label current HEAD with a name 17 # t, reset <label> = reset HEAD to a label
複数 コミットを1つにまとめる例 118 1 pick 2ff810a 2st commit 2 squash 80e4e22 3rd commit 3 squash 6bb05cb 4th commit 4 5 # Rebase 17c2008..6bb05cb onto 17c2008 (3 commands) 6 # 7 # Commands: 8 # p, pick <commit> = use commit 9 # r, reword <commit> = use commit, but edit the commit message 10 # e, edit <commit> = use commit, but stop for amending 11 # s, squash <commit> = use commit, but meld into previous commit 12 # f, fixup <commit> = like "squash", but discard this commit's log message 13 # x, exec <command> = run command (the rest of the line) using shell 14 # b, break = stop here (continue rebase later with 'git rebase --continue') 15 # d, drop <commit> = remove commit 16 # l, label <label> = label current HEAD with a name 17 # t, reset <label> = reset HEAD to a label
複数 コミットを1つにまとめる例 119 1 pick 2ff810a 2st commit 2 squash 80e4e22 3rd commit 3 squash 6bb05cb 4th commit 4 5 # Rebase 17c2008..6bb05cb onto 17c2008 (3 commands) 6 # 7 # Commands: 8 # p, pick <commit> = use commit 9 # r, reword <commit> = use commit, but edit the commit message 10 # e, edit <commit> = use commit, but stop for amending 11 # s, squash <commit> = use commit, but meld into previous commit 12 # f, fixup <commit> = like "squash", but discard this commit's log message 13 # x, exec <command> = run command (the rest of the line) using shell 14 # b, break = stop here (continue rebase later with 'git rebase --continue') 15 # d, drop <commit> = remove commit 16 # l, label <label> = label current HEAD with a name 17 # t, reset <label> = reset HEAD to a label 3rd, 4th が 2st に吸収される
Git 基礎 133 $ git submodule add https://github.com/chaconinc/DbConnector $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: .gitmodules new file: DbConnector $ git submodule status # submoduleのどのコミットハッシュを参照しているか確認できる
Git 基礎 134 $ git submodule add https://github.com/chaconinc/DbConnector $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: .gitmodules new file: DbConnector $ git submodule status # submoduleのどのコミットハッシュを参照しているか確認できる 個人的に パッケージングできるならそ 方が好み