👏

GitHub|チームでの使い方まとめ

2023/08/15に公開

プログラミングスクールにて、チーム開発のフェーズが始まりました。
今後使う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 -Agit 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 (リモートリポジトリの最新版をローカルリポジトリに反映させる)

トピックブランチで作業する

トピックブランチでの作業は

  1. トピックブランチを切って、トピックブランチ内で作業する
  2. 作業完了後にプッシュし、プルリクエストを作成する
  3. 他メンバーがプルリクエストを確認し、リモートリポジトリ上でマージする
  4. 全員がマージされたブランチをローカルリポジトリにプルする
  5. 全員がローカルリポジトリでマージし、各トピックブランチをリモートリポジトリにプッシュする
  6. 各人で作業を再開する

という流れになります。

トピックブランチを切る(代表)

$ 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」をクリック。

プルした後に発生した場合、
同様の手順でファイルを修正し、コミット&プッシュする。

参照

https://note.nkmk.me/git-add-u-a-period/
https://it-jog.com/khow/git/gitusedcmd
https://www-creators.com/archives/5258

Discussion