社内 LT に使ったものを少し改編しています
主に git 初級者の方 (私もですが) に向けた内容だと思います
Qiita スライドモードでご覧頂ければ幸いです
目次
-
- 「commit & push」 ボタンを常用しない (IDE 等)
-
- pull だけでなく fetch も (たまに) 使ってみよう!
- おまけ. 私が git を好きな訳
1. 「commit & push」 ボタンを常用しない (IDE 等)
commit と push の役割を理解しよう!
- commit -> ローカルリポジトリへの変更
- push -> リモートリポジトリへの変更
なのでいくら commit しても push するまで他の人は見られない
また、commit しなければ push し続けてもリモートは変更されない
commit & push だと・・
- 共通のブランチ (チームで 1 ブランチ等) で作業している場合、他の人の PR 中だと自分が commit & push できない
- commit & push した後に間違いに気づいたら都度 commit & push となり commit log が汚くなりがち
PR: Pull Request
commit をある程度まとめて push だと・・
- 共通のブランチ (チームで 1 ブランチ等) で作業している場合、他の人の PR 中でも自分のタイミングで commit ができる
- commit した後に間違いに気づいても push 前だったら修正可能
- 1 commit の粒度を小さくする習慣が身につく (と思う) !
- push 前に commit を見返すことで、commit log が綺麗に (なりそう) !
「commit & push」 ボタンを常用している方は「commit」 をある程度まとめて 「push」も試すと良いかも
2. pull だけでなく fetch も使ってみよう!
pull と fetch の役割
- pull -> リモートリポジトリから最新の情報を取得し、ローカルブランチに反映
- fetch -> リモートリポジトリから最新の情報を取得
しかし fetch だけしてもローカルブランチに反映されないよ?
fetch した情報はいったいどこへ・・
リモートとローカルの整理
種別 | 場所 | |
---|---|---|
リモートブランチ | リモート | |
リモート追跡ブランチ | ローカル | remotes/origin/master, remotes/origin/develop 等 |
ローカルブランチ | ローカル | master, develop 等 |
リモートブランチとローカルブランチの間に、「リモート追跡ブランチ」がローカルに存在します!
pull
種別 | 場所 | |
---|---|---|
リモートブランチ | リモート | |
リモート追跡ブランチ | ローカル | ↓ pull |
ローカルブランチ | ローカル | ↓ pull |
pull はローカルブランチの変更まで全て一気に行う
fetch
種別 | 場所 | |
---|---|---|
リモートブランチ | リモート | |
リモート追跡ブランチ | ローカル | ↓ fetch |
ローカルブランチ | ローカル |
fetch はリモート追跡ブランチの変更まで
なので merge するまでローカルブランチは変更されません
pull = fetch + merge
$ git pull
は
$ git fetch && git merge origin/master
ところで pull じゃなくて fetch する時って
- リモート上 (GitHub 等) からリモートブランチを作った場合
$ git fetch -a
- リモートの master を pull して自分の作業ブランチに反映させたい時
$ git fetch -a && git merge origin/master
- これは長い
$ git stash && git checkout master && git pull && git checkout my-branch && git merge master
とか?他にあったら教えてください!
たまには fetch も
おまけ. 私が git を好きな訳
- ブランチのチェックアウトが速い
- リーナス・トーバルズさんが作った動機がかっこいい
TED「リーナス・トーバルズ: Linuxの背後にある精神」より抜粋
- (リーナス) Gitは私にとって2番目の 大プロジェクトですが それはただ自分の最初の大プロジェクトを 維持管理するために作ったんです それが私の 仕事の仕方なんです ただ楽しみのために プログラムを 書くこともありますが 私は役に立つプログラムを 作りたいんです だから 私のプロジェクトはどれも 私自身が必要としていた ものでした
- (クリス) つまりLinuxにせよGitにせよ あまり多くの人と働かずに 済むようにしたいという あなたの欲求から予期せず生まれた 結果だったわけですね
- (リーナス) まったくもってそうです
- (笑)
- (クリス) いやはや驚きです
- (リーナス) まったく
- (拍手)
2016/5/17(火) 9:39配信
( translated by Yasushi Aoki , reviewed by Natsuhiko Mizutani )
https://headlines.yahoo.co.jp/ted?a=20160517-00002464-ted