2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git commit, fetch, pull (git LT vol.1)

Last updated at Posted at 2018-11-27
1 / 19

社内 LT に使ったものを少し改編しています
主に git 初級者の方 (私もですが) に向けた内容だと思います
Qiita スライドモードでご覧頂ければ幸いです


目次

    1. 「commit & push」 ボタンを常用しない (IDE 等)
    1. 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」も試すと良いかも :smile:


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 も:smile:


おまけ. 私が 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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?