GitHub|チームでの使い方まとめ
プログラミングスクールにて、チーム開発のフェーズが始まりました。
今後使うGitHubの使い方をまとめておきます。
Gitを使用する理由
・データのバックアップが取れる。
・複数人で同時に作業を進められる。
GitHubのチーム・リポジトリを作成する
チーム作成(代表)
右上の+ボタンから、「New organization」を選択。
Freeプランを選択。
チーム名を決め、メンバーを招待し、「Complete setup」をクリック。
※ チーム作成後、「People」タグからさらにメンバーを招待することも可能。
※ メンバー招待時には「Owner」権限を付与すること。
リポジトリ・ アプリケーション作成(代表)
「Repositories」タグの「Create a new repository」をクリック。
リポジトリ名を決め、「Public」を選択し、「Create repository」をクリック。
iCloudeでアプリケーションを作成。
アプリケーションをGitにpushする(代表)
以下のコードを実行する。
$ git init (init=initialize ローカルリポジトリの作成)
$ git add -A (全ファイルをステージングする)
$ git commit -m "first commit" (コミット/ローカルリポジトリに登録する)
$ git remote add origin リポジトリURL(SSH) (リモートリポジトリの登録)
$ git branch -M main (ブランチ名を main に変更)
$ git push -u origin main (プッシュする)
git add
の使い方
git add ファイル名
特定のファイルをステージング
git add フォルダ名
特定のフォルダをステージング
git add .
変更/削除/新規作成された全てのファイルをステージング
git add -A
A = all,変更/削除/新規作成された全てのファイルをステージング
git add -u
u = update,バージョン管理されていて、変更/削除された全てのファイルをステージング
※バージョン管理されていない(新規ファイル)はステージングされない
現在、git add -A
とgit add .
は同義です。
※git ver.1.xまでは、git add.
では、削除されたファイルはaddされなかったという違いがありました。
git push -u origin main
の -u をつけることで、
次回以降、git push
コマンドのみでgit push origin main
が実行される。
クローンする(他メンバー)
GitHub上で、当該リポジトリ画面の右上の「code」ボタンをクリック。
SSHを選択し、URLをコピーする。
Cloud9上で
$ git clone リポジトリURL(SSH)
を実行。
developブランチを作成する
ブランチの確認
以下コマンドを実行して、存在するブランチと現在のブランチを確認できる。
$ git branch
developブランチの作成(代表)
以下コマンドを実行して、developブランチを作成し、developブランチに移動することができる。
$ git checkout -b develop
※ ブランチは機能・タスク・バグごとに切る(作成する)こと。
[参考]
$ git checkout
$ git switch
どちらもブランチを切り替えるコマンド。
[参考]
$ git checkout -b ブランチ名
$ git switch -c ブランチ名
どちらも新規ブランチを作成して、そのブランチに移動するコマンド。
developブランチのコミット&プッシュ(代表)
「develop」ブランチを作成したので、空コミット&プッシュして、リモートリポジトリに反映させる。
$ git commit --allow-empty -m "first commit"
$ git push origin develop
developブランチを反映させる(他メンバー)
$ cd アプリケーション名
$ git checkout -b develop
$ git pull origin develop (リモートリポジトリの最新版をローカルリポジトリに反映させる)
トピックブランチで作業する
トピックブランチでの作業は
- トピックブランチを切って、トピックブランチ内で作業する
- 作業完了後にプッシュし、プルリクエストを作成する
- 他メンバーがプルリクエストを確認し、リモートリポジトリ上でマージする
- 全員がマージされたブランチをローカルリポジトリにプルする
- 全員がローカルリポジトリでマージし、各トピックブランチをリモートリポジトリにプッシュする
- 各人で作業を再開する
という流れになります。
トピックブランチを切る(代表)
$ git checkout develop (統合ブランチへ移動)
$ git checkout -b install-devise (作業用ブランチを作成・移動)
install-devise内で、作業を行う。
例
Gemfileにgem ‘devise’
を追記。
以下コマンドを実施し、deviseをインストールする。
$ bundle install
$ rails g devise:install
$ rails g devise User
$ rails db:migrate
作業完了後、以下コマンドを実行し、リモートリポジトリに反映させる。
$ git status (ファイルの変更内容の確認)
$ git add -A
$ git commit -m "Add Devise"
$ git push origin install-devise
プルリクを作成する(代表)
「Pull request」タグ内の「New pull request」をクリック。
マージ先と自分のブランチを設定し、「Create pull request」をクリック。
編集内容について詳細等を記載し、「Create pull request」をクリック。
プルリクを確認し、マージする(他メンバー)
「Pull request」タグからプルリクを確認する。
内容を確認後、コメントを残す。
問題なければ、プルリクの作成者以外が、プルリクをマージする。
「File changed」の内容を確認し、変更点が確認できたら「Merge pull request」をクリック。
「Insights>Network」から、正常にマージできていることを確認。
最新バージョンのdevelopブランチをプルする。(代表者&他メンバー)
$ git checkout develop
$ git branch
$ git pull origin develop
上記コマンドを実行し、最新のリモートリポジトリのバージョンをプルする。
ローカルリポジトリでマージ & リモートリポジトリに反映(代表者&他メンバー)
最新のリモートリポジトリをプルし、動作確認を行った後、
以下コマンドを実行し、自分のローカルリポジトリにも反映させる。
$ git checkout 自分の作業ブランチ (自分の作業ブランチに移動する)
$ git merge origin/develop (動作が問題なければ、自分のブランチにも反映 )
その後、自分の作業ブランチをpushして、
自分の作業ブランチのリモートリポジトリにも反映させる。
$ git push origin 自分の作業ブランチ (リモートの自分のブランチにも反映)
「Insights<Network」で、全員が横並びになったことを確認後、各々の作業へ戻る。
コンフリクトを修正する
コンフリクトとは
Gitはマージする時、変更箇所を自動的に統合する。
変更箇所が異なるファイルにある場合、問題なく統合できる。
しかし、異なるブランチで、同じファイルの同じ場所への変更がある場合、エラー(コンフリクト)が発生する。
コンフリクトは
ブランチa、ブランチbで各人が同時に作業しており、
ブランチaを統合ブランチにマージしたものの、
ブランチbではブランチaをマージしたことを反映させていない場合に起きる。
コンフリクトの発生箇所は、以下のように表示される。
<<<<<HEAD
自分の作業で変更した内容
==========
マージしようとしたブランチの内容
>>>>>> commit
コンフリクトの解決
コンフリクトは、プルリクの作成後や、プルした後に発生する。
プルリクの作成後にコンフリクトが発生した場合、
「Resolve conflicts」をクリックし、コンフリクトが起きている部分を修正する。
その後、右上の「Mark as resolved」をクリック。
プルした後に発生した場合、
同様の手順でファイルを修正し、コミット&プッシュする。
参照
Discussion