Contenu connexe
Plus de Yuichi Yoshida (14)
Gitのすすめ
- 3. subversion?
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \
| |r┬-| | さて,今日もsubversionからチェックアウトして
\ `ー'´ / コーディングだお!!
ノ \
/´ ヽ
- 4. subversion?
___
/ \
/ノ \ u. \ !?
/ (●) (●) \
| (__人__) u. | クスクス>
\ u.` ⌒´ /
ノ \
/´ ヽ
- 7. って言われても
____
/ \
/ ─ ─ \
/ (○) (○) \ SVNじゃだめなのかお…
| (__人__) |
\ ` ⌒´ /
- 8. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) いまだにsvnか・・・・・
| ` ⌒´ノ 日付でファイルが増えていくよりマシだが・・・
. | }
. ヽ } エンジニアならgitを使うだろJK
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 9. そんなこんなで
____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒:::::\ やらない夫!
| |r┬-| | gitについてやる夫に教えろお!
\ `ー'´ /
- 10. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) まぁいいだろう・・・・
| ` ⌒´ノ
. | }
. ヽ } (このプレゼン作るのに2時間かかったんだが)
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 13. そんなこんなで
/ ̄ ̄\
/ノ( ゝ 、_,ノヽ r'´ ゙ヽ /`ヽ ____
| ⌒(( ●)(●) ヽ ヽ从从/ / \ /\
. | (__人__) /⌒l \ \/ /て (●)liil(●) ノ( \
| ` ⌒´ノ |`'''| ∑ ヽ/ / そ / (__人__) ⌒ \
/ ⌒ヽ } | | ,)/ / \ く | |!!il|!|!l| | コンセプトとかいいからさっさと
/ へ \ }__/ / / /\ \ \i⌒ヽェェ| / 使い方を教えるお!!!
/ / | ノ ノ / / YYY\ \ \ \ /⌒,/´
( _ ノ | \´ / / \ \ / \ \/ /l
| \_,/ / \ \_/ \__ノ |\
.| / \ |) )
ヽ / \ ,r' /
\ , '´ `' , /ー'′
\ ( ) /
\ \ / /
使い方からいくとsvnとの乖離とコマンド大杉のせいで挫折するんだよ!
- 14. コンセプト・・・ですか・・・
____
/ \
/ _ノ ヽ、_ \ そんなこと言われても
/ (●) (●) \ どうすりゃいいのさ
| (__人__) | コンセプトとかわからないお
\ ` ⌒´ /
/´ `\
/ / l l
__l l_.[] _____/_/__
\, ´-'ヽ
ヾ_ノ
|
|
|__ コロ・・・・
_____\ コロ・・・・
()__)」
- 15. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) ゆっくりはじめるぞ
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 29. 実際にやってみよう
Mac-mini:Desktop sonson$ mkdir test
Mac-mini:Desktop sonson$ cd test
Mac-mini:test sonson$ git init
Initialized empty Git repository in /Users/sonson/Desktop/test/.git/
Mac-mini:test sonson$ ls -al
total 0
drwxr-xr-x 3 sonson staff 102 3 13 09:53 .
drwx------+ 22 sonson staff 748 3 13 09:53 ..
drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git この不可視ファイルの中身がリポジトリのデータ
- 30. 実際にやってみよう
Mac-mini:Desktop sonson$ mkdir test
Mac-mini:Desktop sonson$ cd test
Mac-mini:test sonson$ git init
Initialized empty Git repository in /Users/sonson/Desktop/test/.git/
Mac-mini:test sonson$ ls -al
total 0
drwxr-xr-x 3 sonson staff 102 3 13 09:53 .
drwx------+ 22 sonson staff 748 3 13 09:53 ..
drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git
Mac-mini:test sonson$ touch main.c
- 31. 実際にやってみよう
Mac-mini:Desktop sonson$ mkdir test
Mac-mini:Desktop sonson$ cd test
Mac-mini:test sonson$ git init
Initialized empty Git repository in /Users/sonson/Desktop/test/.git/
Mac-mini:test sonson$ ls -al
total 0
drwxr-xr-x 3 sonson staff 102 3 13 09:53 .
drwx------+ 22 sonson staff 748 3 13 09:53 ..
drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git
Mac-mini:test sonson$ touch main.c
Mac-mini:test sonson$ git add main.c gitのファイルツリーの中に追加する
- 32. 実際にやってみよう
Mac-mini:Desktop sonson$ mkdir test
Mac-mini:Desktop sonson$ cd test
Mac-mini:test sonson$ git init
Initialized empty Git repository in /Users/sonson/Desktop/test/.git/
Mac-mini:test sonson$ ls -al
total 0
drwxr-xr-x 3 sonson staff 102 3 13 09:53 .
drwx------+ 22 sonson staff 748 3 13 09:53 ..
drwxr-xr-x 10 sonson staff 340 3 13 09:53 .git
Mac-mini:test sonson$ touch main.c
Mac-mini:test sonson$ git add main.c
Mac-mini:test sonson$ git commit -m "First commit, added main.c"
[master (root-commit) d3f62cb] First commit, added main.c
0 files changed
create mode 100644 main.c
新しいコミットが作成された
- 34. わかった?
____
/ \ ( ;;;;(
/ _ノ ヽ__\) ;;;;)
/ (─) (─ /;;/
| (__人__) l;;,´ コミットの管理がかわっただけだお?
/ ∩ ノ)━・'/
( \ / _ノ´.| | 結局svnと同じじゃないかお・・・・?
.\ " /__| |
\ /___ /
- 35. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) ツリー構造で管理していて,
| ` ⌒´ノ ファイルの部分ごとの差分もちゃんと取れる
. | } 良さがあるんだが・・・・.
. ヽ } まぁ,ここはそのままでいいだろう
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 46. わかった?
____
/ \ ( ;;;;(
/ _ノ ヽ__\) ;;;;)
/ (─) (─ /;;/
| (__人__) l;;,´ コミットと何が違うのかお?
/ ∩ ノ)━・'/
( \ / _ノ´.| | pullとpushの呼び方が変わっただけかお・・・・?
.\ " /__| |
\ /___ /
- 47. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) 確かにな・・・・・
| ` ⌒´ノ 実際の開発の風景を思い浮かべると
. | } リポジトリがpush/pullで対等であることの
. ヽ } よさがわかると思うぞ
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 59. わかった?
____
/ \ ( ;;;;(
/ _ノ ヽ__\) ;;;;)
/ (─) (─ /;;/
| (__人__) l;;,´ 分散ってのはわかったお・・・・・・・・
/ ∩ ノ)━・'/ 色々な人とやるには便利っぽいお・・・・・・
( \ / _ノ´.| | ウチの開発環境に関係ないお・・・・・・?
.\ " /__| |
\ /___ /
- 60. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) pull requestと呼ばれるgithubの仕組みを思い浮かべるといい.
| ` ⌒´ノ
. | } マージする場所をbranchを作った人が指定するような感じだ
. ヽ } 職人的にマージする必要性がなくなるので捗る
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 83. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop' 新しく作ったbranchに切り替える
develop
master
- 84. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
branchを調べるとちゃんとふたつある
develop
master
- 85. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
Mac-mini:test sonson$ touch feature1.c
Mac-mini:test sonson$ git add feature1.c
Mac-mini:test sonson$ git commit -m "Added new feature."
[develop 5b5cc9c] Added new feature.
0 files changed
create mode 100644 feature1.c branch “develop”でファイルを追加する
develop
master
- 86. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
Mac-mini:test sonson$ touch feature1.c
Mac-mini:test sonson$ git add feature1.c
Mac-mini:test sonson$ git commit -m "Added new feature."
[develop 5b5cc9c] Added new feature.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$ ls
feature1.c main.c ちゃんとファイルはふたつあるよね
develop
master
- 87. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
Mac-mini:test sonson$ touch feature1.c
Mac-mini:test sonson$ git add feature1.c
Mac-mini:test sonson$ git commit -m "Added new feature."
[develop 5b5cc9c] Added new feature.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$ ls
feature1.c main.c
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
ここでbranch “master”に戻すとどうなる?
develop
master
- 88. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
Mac-mini:test sonson$ touch feature1.c
Mac-mini:test sonson$ git add feature1.c
Mac-mini:test sonson$ git commit -m "Added new feature."
[develop 5b5cc9c] Added new feature.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$ ls
feature1.c main.c
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c あ,ファイルが消えてる!!!!!!!!!
develop
master
- 89. 実際にやってみよう
Mac-mini:test sonson$ git branch
* master
Mac-mini:test sonson$ git branch develop
Mac-mini:test sonson$ git checkout develop
Switched to branch 'develop'
Mac-mini:test sonson$ git branch
* develop
master
Mac-mini:test sonson$ touch feature1.c
Mac-mini:test sonson$ git add feature1.c
Mac-mini:test sonson$ git commit -m "Added new feature."
[develop 5b5cc9c] Added new feature.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$ ls
feature1.c main.c
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c あ,ファイルが消えてる!!!!!!!!!
gitのリポジトリを作ったディレクトリはgitに管理されるイメージ.
すべてのデータは.git内にあり,そこからデータを引き出して,
そのディレクトリ内で作業する感じになる
- 91. あれ?
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1."
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
- 92. あれ?
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1."
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
これをfast forwardマージといいます.
ファイル等の変更にコンフリクト等がない場合は,
そのままbranchを飛ばすだけでマージが成立するのです.
- 94. おー
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
- 95. おー
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
これをno fast forwardマージといいます.
常に新しいコミットを作ってマージします.
- 96. おー
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
手元でマージするときは必ず,--no-ffで行うべきです.
どこでマージが行われたのかわからないからです.
さっきの例は--no-ffだったのね
(というか絶対コミットができる)
- 97. おー
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
ただし,pullするときには--ffでやる方がいいでしょう.
ローカルに対してもコミットが発生してしまうので,
コミットグラフがぐちゃぐちゃになってしまいます
- 98. おー
Mac-mini:test sonson$ git checkout master
Switched to branch 'master'
Mac-mini:test sonson$ ls
main.c
Mac-mini:test sonson$ git merge develop -m "Merge new feature1." --no-ff
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 feature1.c
Mac-mini:test sonson$
developをmasterにマージ
develop
master
とは言っても,グラフがめちゃくちゃになっても
コードはちゃんと保たれるのであまり心配することもありません.
最初は恐れずガンガンやって,後悔することにしましょう.
- 100. わかった?
____
/ \ ( ;;;;(
/ _ノ ヽ__\) ;;;;)
/ (─) (─ /;;/
| (__人__) l;;,´ ますますわからなくなったお・・・・・・・・
/ ∩ ノ)━・'/ これが何の役に立つんだお・・・・・・?
( \ / _ノ´.| |
.\ " /__| |
\ /___ /
- 101. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) このbranchとpush/pullを組み合わせると
| ` ⌒´ノ 分散型の開発開発すごく捗るんだが・・・・
. | }
. ヽ } 仕方がない具体的な例で説明するか
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 123. 祭りの後
____
/ \ ( ;;;;(
/ _ノ ヽ__\) ;;;;)
/ (─) (─ /;;/
| (__人__) l;;,´ なんとなくわかったような・・・・・・・・
/ ∩ ノ)━・'/ なんだかわからないような・・・・・だお
( \ / _ノ´.| |
.\ " /__| |
\ /___ /
- 124. / ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) しょせん概念は概念.
| ` ⌒´ノ 実際にやらないとわからないだろJK
. | }
. ヽ } この使い方を年頭にいれて使ってみるのが定石だ
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
- 125. ____
/⌒ ⌒\ ホジホジ
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ とりあえずやってみるお
| mj |ー'´ |
\ 〈__ノ /
ノ ノ
- 126. ._
\ヽ, ,、
`''|/ノ
.|
_ |
\`ヽ、|
\, V
`L,,_
|ヽ、) ,、
/ ヽYノ
/ r''ヽ、.|
| `ー-ヽ|ヮ
| `|
|. |
ヽ、 |
ヽ____ノ
/_ノ ' ヽ_\
/(≡) (≡)\
/::::::⌒(__人__)⌒::::: \
| |r┬-| |
\ `ー'´ /
/ \
( | | )
\| э |/
( ,,,, ,ノ
\ 、(U)ノ ノ
\/ / ┼ヽ -|r‐、. レ |
/ /\ d⌒) ./| _ノ __ノ
⊂⌒__)__)