💬

チーム開発におけるGitHubの使い方 最新の状態を取り込みながら開発をする

2024/03/31に公開

GitHubのリモートリポジトリにはどんどん最新のコードが追加されていきます。これを取り込みながら開発をしていくときの流れをまとめたものがないため、覚書きとして記載しておきます。

"作業途中で最新の状態を取り込まないといけない"場面で困ったのですが、下部の「作業1」で解説しています。

大前提

  • 開発は必ず作業ブランチで行う
    ※うっかりmainで開発を行った場合はrebaseやcherry-pickといった処理が必要になる
  • git switchで作業ブランチからmainブランチに移動するときは、作業ブランチに差分が残っていないことが条件

作業の前提

・すでに作業用ブランチは作成している
・作業用ブランチにいる状態

開発中にリモートリポジトリから最新の情報を取り込む基本の流れ

1.開発中は基本的に作業ブランチにいるが念のため現在のブランチを確認: git branch
2.作業ブランチの状態を確認: git status
3.ここで変更分が残っていれば取りのぞく作業を行う: 作業1
4.もう1回作業ブランチの状態を確認: git status
5.変更分が残っていなければmainブランチに移動 : git switch main
6.mainブランチの状態を確認→差分がないことを確認する : git status
7.リモートリポジトリの状態を取得する(同期みたいなもの) : git fetch
8.取得したリモートリポジトリの状態を確認する : git status
例えばここで
Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
などと書いてあればリモートリポジトリの方が2つ先に進んでいる(最新の情報がある)という事なのでpullして取り入れないといけない
9.リモートリポジトリから最新コードを取得しマージする。これでローカルのmainが最新の状態ンになる: git pull origin main
10.作業ブランチに移動する: git switch ブランチ名
11.最新の状態になったローカルmainと作業用ブランチをマージする。これで作業用ブランチも最新の状態になる: git merge main

ここでローカルのmainと作業ブランチの両方が最新の状態になります。

12.念のため現在のブランチを確認。作業用ブランチにいたらOK: git branch
13.リモートのブランチにpushする。これでGitHub(リモート)のブランチに変更分がアップされる: git push origin [ブランチ名]
14.GitHub上でプルリクエストの作成を行う

作業1

よくあるパターン。開発途中なのでgit addもgit commitもするべきではない。でもリモートリポジトリの最新の状態を取りこまないと開発に支障がでる。

git statusで下記のようなパターンになりがちです。

On branch feature/palylist
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   frontend/src/app/page.jsx

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .history/
        .vscode/
        frontend/src/yarn.lock

no changes added to commit (use "git add" and/or "git commit -a")

解消すべき差分は
Changes not staged for commit:
にのっているものだけです。

Untracked files:
に掲載されているものは新しく作られたものでGitが追跡をしていないため差分がでません。
今回は差分が問題であるためUntracked filesの処理は行いません。

さて以下がパターン分けでの処理の方法です。

開発途中の場合

下記コマンドでChanges not staged for commit:に掲載されているものを一時的に退避(棚におくようなもの)させます。後で戻すことができます。

git stash

一段落ついた!commitしてもいい状態なら

おなじみのgit add & git commitで変更分をコミットしておきます。

git add [ファイル名orファイルディレクトリ]

git commit -m [メッセージ]

これで差分がなくなりgit switchでmainブランチに移動できるはずです。

参考記事

https://qiita.com/yukiya1006/items/4a491df3595662d8f781

Discussion