Git – 主な開発の流れ(git clone)
リモートサーバー
ローカルサーバーA ローカルサーバーB
git clone
1. リモートサーバ等にある中心リポジトリをローカルに複製する (git clone)
file A
file B
c0
file A
file B
c0
7.
Git – 主な開発の流れ(git clone)
リモートサーバー
ローカルサーバーA ローカルサーバーB
git clone
1. リモートサーバ等にある中心リポジトリをローカルに複製する (git clone)
file A
file B
c0
file A
file B
c0
file A
file B
c0
8.
Git – 主な開発の流れ(git add, commit)
リモートサーバー
ローカルサーバーA ローカルサーバーB
2. ローカルでコンテンツの修正・追加・削除を行い、ローカルリポジトリに変更
履歴を記録する (git commit)。 必要に応じて過去の状態の閲覧や復元などを行う。
場合によってはこのステップを何度か繰り返す。
file A の一部を変更
file A
file B
c0
file A
file B
c0
file A
file B
c0
これからの流れ:
サーバーBで行ったファイルの変更を
サーバーAに反映させる
9.
Git – 主な開発の流れ(git add, commit)
リモートサーバー
ローカルサーバーA ローカルサーバーB
2. ローカルでコンテンツの修正・追加・削除を行い、ローカルリポジトリに変更
履歴を記録する (git commit)。 必要に応じて過去の状態の閲覧や復元などを行う。
場合によってはこのステップを何度か繰り返す。
file A の一部を変更
git add
git commit
→ 編集履歴としてローカルに保存
(図ではc1として表す, c1はfile Aの
どの行をどう変更したという記録)
file A
file B
c0
file A
file B
c0
file A
file B
c1
c0
10.
Git – 主な開発の流れ(git push)
リモートサーバー
ローカルサーバーA ローカルサーバーB
3. ローカルの変更内容を中心リポジトリに反映させる (git push)。作業者ごとの
変更内容が衝突することもある。Gitが自動で解決できる場合もあれば、手動での
解決 (git merge)が必要なこともある。
file A
file B
c0
file A
file B
c1
c0
file A
file B
c1
c0
git push
11.
Git – 主な開発の流れ(git pull)
リモートサーバー
ローカルサーバーA ローカルサーバーB
4. 更新された中心リポジトリ(他者の作業内容も統合されている)をローカルの
複製にも反映する (git pull)。これによりローカル環境のコードも最新の内容にな
るので、改めてステップ2の作業を行う。
file A
file B
c1
c0
file A
file B
c1
c0
file A
file B
c1
c0 git pull
まとめ:
リモートサーバーを介して,
ローカルサーバー同士の同期 / 編集履歴
の共有が行える
Git – ブランチ運用例
masterブランチ
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
c0
file A
file B
c0
file A
file B
c0
とりあえずpull
しました
まかせて
A B
ローカルサーバーZ
file A
file B
c0
私が
リーダー
です
Z
master
15.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
c0
file A
file B
c0
file A
file B
c0
オレもだぜ!
A B
ローカルサーバーZ
file A
file B
c0
Z
ブランチを
作るぜ!
master
featureA
featureB
masterブランチ
16.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
ca2
ca1
c0
file A
file B
cb2
cb1
c0
file A
file B
c0
featureBブランチで
開発中
A B
ローカルサーバーZ
file A
file B
c0
Z
master
featureAブランチで
開発中
featureA
featureB
masterブランチで
今まで通り
計算できる
ca1 ca2
cb2cb1
masterブランチ
17.
Git – ブランチ運用例
リモートサーバー
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
ca2
ca1
c0
file A
file B
file A
file B
c0
まだです
A B
ローカルサーバーZ
file A
file B
cz1
c0
Z
できた
master
featureA
featureB
ca1 ca2
cb2cb1
cb3
cb2
cb1
cb3
バグがあったから
解消しといたよ
cz1
18.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
file A
file B
cz1
c0
まだです
A B
ローカルサーバーZ
file A
file B
cz1
c0
Z
masterの変更を
取り込むよ
master
featureA
featureB
ca1 ca2
cb2cb1
cb3
cb2
cb1
cb3
cz1
merge
masterブランチ
19.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
まだやってます
A B
ローカルサーバーZ
file A
file B
cz1
c0
Z
fearueAで
動作確認して
okでした
master
featureA
featureB
ca1 ca2
cb2cb1
cb3
cb2
cb1
cb3
cz1
merge
file A
file B
cz1
c0
masterブランチ
20.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
まだやってます
A B
ローカルサーバーZ
file A
file B
cz1
c0
Z
終わったんで
帰ります
master
featureA
featureB
ca1 ca2
cb2cb1
cb3
cb2
cb1
cb3
cz1
merge
Aくん
お疲れ
file A
file B
cz1
ca2
ca1
masterブランチ
21.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
終わりました
masterを
マージしてみます
B
ローカルサーバーZ
file A
file B
cz1
c0
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb4
cb3
cb2
cb3
cz1
cb4
file A
file B
cz1
ca2
ca1
masterブランチ
22.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
fileBで
衝突しました
B
ローカルサーバーZ
file A
file B
cz1
c0
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb4
cb3
cb2
cb3
cz1
cb4
merge
解決しといて
衝突; ZとBで同じ箇所を別々に変更
していた場合生じる
• どちらかの変更のみを反映させる
• 両方の変更を反映させる
などの処理を行う.
<<<<<<< HEAD
# 作業ブランチでの変更内容
・・・
=======
# マージしたブランチでの変更内容
・・・
>>>>>>> develop
の記号で, 衝突箇所を教えてくれる
file A
file B
cz1
ca2
ca1
masterブランチ
23.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
衝突を
解決しました
B
ローカルサーバーZ
file A
file B
cz1
c0
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb5
cb4
cb3
cb3
cz1
cb4
merge
file A
file B
cz1
ca2
ca1
masterブランチ
24.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
featureBブランチでの
テスト実行で
失敗しました
B
ローカルサーバーZ
file A
file B
cz1
c0
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb5
cb4
cb3
cb3
cz1
cb4
merge
私が手伝おう
file A
file B
cz1
ca2
ca1
masterブランチ
25.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
お願いします
B
ローカルサーバーZ
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb5
cb4
cb3
cb3
cz1
cb4
merge
featureBに
checkoutしたよ
file A
file B
cb5
cb4
cb3
file A
file B
cz1
ca2
ca1
masterブランチ
checkout
他のブランチの状態に
切り替えること
26.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
さすがです
B
ローカルサーバーZ
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb5
cb4
cb3
cb3
cz1
cb4
解決しました
file A
file B
cb5
cb4
cb3
file A
file B
cz1
ca2
ca1
masterブランチ
27.
Git – ブランチ運用例
ローカルサーバーAローカルサーバーB
状況: 機能Aと機能Bを開発したい
→ リーダーZ がサーバーA, Bを管理するA, Bさんにそれぞれ開発を任せた
file A
file B
cz1
ca2
ca1
file A
file B
B
ローカルサーバーZ
Z
master
featureA
featureB
ca1 ca2
cb2cb1
cb5
cb4
cb3
cb3
cz1
cb4
おつのかれ
file A
file B
cb5
cb4
cb3
merge
マージしました
file A
file B
cb5
cb4
cb3
cz1
masterブランチ