Weitere ähnliche Inhalte Ähnlich wie Gitを理解するためにおさえておきたい3つの図(工事中) (20) Gitを理解するためにおさえておきたい3つの図(工事中)6. コミットツリー
E
F
parent
A B C D
G
HEAD
master
v0.1
parent parent parent
parent
parent
parent
9. 用語説明
● ワークツリー
○ ファイルシステム上のファイルのことを指す
● インデックス
○ コミットする対象を指す
● HEAD
○ 現在作業しているブランチの先頭を指す
11. コミットまでの例 (2 / 9)
ワークツリーインデックスHEAD
A
B
C
emacs A.txt
A
B
C
A
B
C
13. コミットまでの例 (4 / 9)
ワークツリーインデックスHEAD
A’
B
C
emacs B.txt
A
B
C
A
B
C
15. コミットまでの例 (6 / 9)
ワークツリーインデックスHEAD
A’
B’
C
git add A.txt
A
B
C
A
B
C
17. コミットまでの例 (8 / 9)
ワークツリーインデックスHEAD
A’
B’
C
git commit
A’
B
C
A
B
C
20. git add
● ワークツリー内の変更をインデックスに追加す
る
● コマンド例
○ git add <ファイル名>
22. git add <ファイル名> (2 / 3)
ワークツリーインデックスローカルリポジトリ
A’
B
C
A
B
C
A
B
C
git add A.txt
24. git commit
● インデックスの修正内容をHEADにコミットする
● コマンド例
○ git commit
25. git commit (1 / 3)
ワークツリーインデックスローカルリポジトリ
A’
B’
C’
A’
B’
C
A
B
C
26. git commit (2 / 3)
ワークツリーインデックスローカルリポジトリ
A’
B’
C’
A’
B’
C
A
B
C
git commit
27. git commit (3 / 3)
ワークツリーインデックスローカルリポジトリ
A’
B’
C’
A’
B’
C
A’
B’
C
29. git status
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A.txt
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: B.txt
#
30. git status
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A.txt
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: B.txt
#
インデックス
ワークツリー
HEADが指しているブランチ
31. git diff
● 比較する
● コマンド例
○ git diff
○ git diff --cached
○ git diff HEAD
50. git commit
● HEADが指しているブランチにコミットを追加し、
ブランチの先頭もそれに移動させる
● コマンド例
○ git commit
62. git merge
● マージする
● コマンド例
○ git merge <ブランチ名>
○ git merge --no-ff <ブランチ名>
○ git merge --ff-only <ブランチ名>
70. 2つのオプション
● --no-ff
○ Fast-forward が実施される条件でマージする際、Fast-forward
せずにマージコミットを生成する
○ マージコミットするマージを強制する
● --ff-only
○ Fast-forward が実施されない条件でマージを試みると
エラーになる
○ Fast-forwardを実施するマージを強制する
72. ローカルとリモートの動作例 (1 / 9)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master
● master*
● v1.0
● v2.0*
73. ローカルとリモートの動作例 (2 / 9)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master
● master*
● v1.0
● v2.0*
git fetch origin
74. ローカルとリモートの動作例 (3 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master
● master*
● v1.0
● v2.0*
fetch
75. ローカルとリモートの動作例 (4 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master
● master*
● v1.0
● v2.0*
git merge --ff-only origin/master
76. ローカルとリモートの動作例 (5 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master*
● master*
● v1.0
● v2.0*
merge
77. ローカルとリモートの動作例 (6 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master*
● master*
● v1.0
● v2.0*
master に対していろいろ実施
78. ローカルとリモートの動作例 (7 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master**
● master*
● v1.0
● v2.0*
79. ローカルとリモートの動作例 (8 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master**
● master*
● v1.0
● v2.0*
git push origin master
80. ローカルとリモートの動作例 (9 / 9)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master**
● master**
● v1.0
● v2.0*
push
82. git clone
● リモートリポジトリを複製する
● コマンド例
○ git clone <URL>
84. git clone <URL> (2 / 3)
リモート
ローカル
● master
● v1.0
● v2.0
git clone ssh://…
85. git clone <URL> (3 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master
● master
● v1.0
● v2.0
86. git fetch
● リモートリポジトリのブランチの内容をローカル
のリモートブランチへ同期する
● コマンド例
○ git fetch <リモート名>
87. git fetch <リモート名> (1 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master
● master*
● v1.0
● v2.0*
88. git fetch <リモート名> (2 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master
● master*
● v1.0
● v2.0*
git fetch origin
89. git fetch <リモート名> (3 / 3)
リモート
ローカル
● origin/master*
● origin/v1.0
● origin/v2.0*
● master
● master*
● v1.0
● v2.0*
fetch
90. git push
● ローカルブランチをリモートにあるブランチへ
マージする (Fast-forward Only)
● コマンド例
○ git push <リモート名> <リモートにあるブランチ名>
91. git push <リモート名> <ブランチ名> (1 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master*
● master
● v1.0
● v2.0
92. git push <リモート名> <ブランチ名> (2 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master*
● master
● v1.0
● v2.0
git push origin master
93. git push <リモート名> <ブランチ名> (3 / 3)
リモート
ローカル
● origin/master
● origin/v1.0
● origin/v2.0
● master*
● master*
● v1.0
● v2.0
push
96. コミットツリー
E
F
parent
A B C D
G
HEAD
master
v0.1
parent parent parent
parent
parent
parent