GitとGitHubを使いこなすためのメモ

GitとGitHubを使いこなすためのメモこんにちは。2月から入った新人のあらいみきです。今日から「爆速」で開発できるエンジニアになるために頻繁にメモを書き残します。
第一弾のテーマはGitです!

macでGitを使いこなすための簡単なメモ。

1. 下準備

☆用意するもの

  • Xcodeがインストールされていて、Command Line Toolsが入っているmacbook

☆インストールするもの

  • Tower

☆GitHubの設定をする。

  • GitHub https://github.com/

☆Git coreをmac portでダウンロード

$ sudo port install git-core

☆Gitのバージョンを確認

$ git version

2. Gitを使う

☆登場人物

  • 中央リポジトリ…メインユーザーが持つプロジェクトのリポジトリ。
  • リモートリポジトリ…各人が中央リポジトリからforkしたリポジトリ。メインユーザーではなく各人のリポジトリとなる。
  • ローカルリポジトリ…リモートリポジトリからローカルへクローンして作るリポジトリ。

☆Gitのおさらい

  • fork…自分のGitのリポジトリに任意のGitのリポジトリをコピーする。
  • pull…任意のリモートリポジトリの変更を自分のところに反映させる。
  • push…自分のリモートリポジトリに、自分のローカルでの変更を反映させる。commitとセットで行うとわかりやすい。
  • commit…自分がローカルで行った変更を確定させる。commitしただけだと変更が自分のリモートリポジトリ反映されないことに注意!(svnとは違う)
  • pull request…自分のリモートリポジトリの変更を中央リポジトリに反映させたい場合は、中央リポジトリに対してpull requestを送る。
  • master…リポジトリの大本命。ここを簡単に変えられないように枝分かれのリポジトリ(=branch)を作る。
  • 中央リポジトリの設定について…Git Flowに似た運用をしているので、中央リポジトリの更新用にリモートリポジトリを追加します。

    中央リポジトリの設定について詳細は後述

☆ローカルにgitのリポジトリを置くディレクトリを作る。

$ mkdir Git用ディレクトリ名

☆GitHubでコピーしたいリポジトリをforkする。

☆forkしたリポジトリのクローンをローカルに作る。

$ cd Git用ディレクトリ名
$ git clone git@xxx/yyy.git
$ git checkout -b ブランチ名

※今回はSSHの鍵認証を使ってるので、HTTPではなくSSHを選択しました。

☆中央リポジトリの設定を行う。
今回は中央リポジトリのリモートブランチとして、”upstream”という名前のリモートブランチを作成しました。

$ git remote add upstream git@フォークしたリポジトリの元のURL

☆ローカルで、クローンしたリポジトリ内のどこかに変更を加える。

☆自分の変更をまずはコミットさせる。

  • Towerの左側のBRANCHESは常にチェックすること。ターゲットになってるブランチだったら、ブランチ名の横に(HEAD)と書いてある。
  • コミットさせたい変更したファイルを選ぶ方法→Statusタブを開いて、任意のファイルのStagedをチェックする。チェックしたら、上部にあるチェック印の”Commit”ボタンをクリック。

これで「コミットは完了」!、、だけどローカルの変更は自分のリモートリポジトリに反映されていない。pushをして、ローカルでの変更を自分のリモートリポジトリに反映させる。

☆変更をpushする。
Towerの上部のpushボタンをクリックし、ブランチの場所を要確認してokボタンをクリックする。
これで自分のリモートリポジトリにも変更した内容が反映させる。
今回はTowerでpushしましたが、ターミナルを使う場合は以下のコマンドを打ちます。

$ git push origin ブランチ名/プロジェクト名

※引数なしのpushをすると、カレントブランチに関わらずローカルブランチと同名のブランチがリモート上にある場合はそれらを一気にpushします。

☆中央リポジトリの最新版を取り込む。

$ git pull upstream ブランチ名

☆pull requestを送る。
GitHub上で自分がフォークしたリポジトリのページに遷移し、Commitsというタブを選択し、自分のpush内容が反映されていることを確認し、pull requestボタンをクリックする。

  • pull(変更を)する側…master
  • pullするもの…pull requestを送る側が変更した箇所

これで中央リポジトリの管理者にpull requestが送信される。

※pull requestを押した後、Tower上で空pushをする。これで自分が行った変更+中央リポジトリの変更を自分のリモートリポジトリに反映することができる。

☆mergeしたいときは?

自分がpull requestを送ったと同時にほかの誰かもpull requestを送ったとき、エラーや競合が起きない範囲で変更を反映させたいところです。

そこでGitHub上でmerge pull requestボタンを押すと、簡単にmergeを行うことができます。さらにmergeされた箇所に対してコメントを書くこともできます。これでソースレビューとマージが同時にできます!

※自分が行った変更と他の人が行った変更がコンフリクトした場合。
例えば他の人と同じファイルを変更していて、pullした際にeclipse上などでファイルを確認したときにエラーが起こっている場合は、自分でeclipe上で変更分を手動でマージする必要があります。その後改めて変更分をpushし、pull requestを送る必要があります。

今回はここまでです。ご覧いただきましてありがとうございます。

参考記事一覧

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です