Weitere ähnliche Inhalte
Mehr von Appresso Engineering Team (20)
Git
- 2. 入門Git
1. gitとは
2. gitの基本概念
3. インストールと初期構成
4. 独りで使う
5. 2か所で使う
6. グループで使う
7. ブランチを使った開発
8. 分散環境とブランチとの関連
9. 変更履歴を追いかける
10. パッチ・べースのワークフロー
11. ゴミファイルの無視
12. 構成変数
13. リモート・リポジトリ定義
14. ファイル・アトリビュート
15. 歴史の2分探索
16. 間違いからの回復
17. フック・メカニズム
18. リポジトリの出版公開
19. gitの周辺
- 8. Subversion の作業例
> svn update
>
> emacs test1.js
> svn commit
>
> emacs test2.js
> svn commit
# リポジトリの修正をローカルのファイル・ディレクトリ群に
反映
# test1.js をエディタで修正
# test1.js をリポジトリに反映
# test2.js をエディタで修正
# test2.js をリポジトリに反映
- 9. Git の作業例
> git fetch
> git merge origin/master
>
> emacs test1.js
> git add test1.js
> git commit
>
> emacs test2.js
> git add test2.js
> git commit
>
> git push
# 共用リポジトリから修正差分を取得
# ローカルリポジトリを作業ブランチにマージ
# test1.js をエディタで修正
# test1.js をコミット対象に指定
# コミット対象のものをローカルリポジトリにコミット
# test2.js をエディタで修正
# test2.js をコミット対象に指定
# コミット対象のものをローカルリポジトリににコミット
# ローカルリポジトリの修正内容を共用リポジトリに反
映
- 10. Git の作業例 (簡略化)
> git pull
>
> emacs test1.js
> git commit -a
>
> emacs test2.js
> git commit -a
>
> git push
# 共用リポジトリから修正差分を取得して、ローカルリ
ポジトリを作業ブランチにマージ
# test1.js をエディタで修正
# 修正されたファイル群をローカルリポジトリにコミット
# test2.js をエディタで修正
# 修正されたファイル群をローカルリポジトリににコミッ
ト
# ローカルリポジトリの修正内容を共用リポジトリに反
映
- 13. Git はオブジェクト
● Git は「オブジェクト」と呼ばれるデータの集合体
● オブジェクトの内容を基に生成されたハッシュを
キーとした Key Value Storeで管理されている
● .git/objects 下に格納されている
- 22. commit オブジェクトの例
4bb4722...
commit 424
tree b1242d7...
parent 1e26b18...
author Teloo
committer Teloo
start.js を修正
ルートの tree オブジェクトを指す
前の commit オブジェクトを指す
このcommit オブジェクトの作者を指す
この commit オブジェクトを
コミットした方を指す
コミットのコメント
- 27. オブジェクト同士の参照 (3/3)
3rd commit
2nd commit
1st commit
tree
tree
tree
blob
"version1"
test.txt
test.txt
blob
"another
file"test2.txt
blob
"version2"
test.txt
test2.txt
- 48. ワークツリー / インデックス / HEAD
の挙動例 (1/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A
B
C
A
B
C
A
B
C
- 49. ワークツリー / インデックス / HEAD
の挙動例 (2/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B
C
A
B
C
A
B
C
emacs A.txt
- 50. ワークツリー / インデックス / HEAD
の挙動例 (3/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C
A
B
C
A
B
C
emacs B.txt
- 51. ワークツリー / インデックス / HEAD
の挙動例 (4/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C
A'
B
C
A
B
C
git add A.txt
- 52. ワークツリー / インデックス / HEAD
の挙動例 (5/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C
A'
B
C
A'
B
C
git commit
- 53. ワークツリー / インデックス / HEAD
の挙動例 (6/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C'
A'
B
C
A'
B
C
emacs C.txt
- 54. ワークツリー / インデックス / HEAD
の挙動例 (7/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C'
A'
B'
C
A'
B
C
git add B.txt
- 55. ワークツリー / インデックス / HEAD
の挙動例 (8/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C'
A'
B
C
A'
B
C
git reset HEAD B.txt
- 56. ワークツリー / インデックス / HEAD
の挙動例 (9/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C'
A'
B
C'
A'
B
C
git add C.txt
- 57. ワークツリー / インデックス / HEAD
の挙動例 (10/10)
ワークツリー インデックス HEAD
(ローカルリポジトリ)
A'
B'
C'
A'
B
C'
A'
B
C'
git commit
- 58. 3種類の diff
● git diff
○ インデックスとワークツリーの差分
● git diff --cached
○ HEAD とインデックスの差分
● git diff HEAD
○ HEAD とワークツリーの差分
- 60. "git merge", "git cherry-pick",
"git rebase" の 3 つを下の図で説明します
A B C
D E
v0.1
master
HEAD
- 63. 2 つの commit を parent とする
commit を作成します
A B C
D E
v0.1
master
HEAD
F
git merge v0.1