⚙️

【Git&Github】git fetchとGitのブランチ管理とワークフロー

2024/07/18に公開

git fetchとは

もう少し詳しく知りたい場合

リモートリポジトリからブランチを指定せず最新状態を取得

リモートリポジトリの最新の変更をローカルに取得(通常リモート名はorigin)
git fetch origin
リモートリポジトリの特定のブランチから最新状態を取得

1.ローカルリポジトリのブランチを確認

ローカルリポジトリのブランチを確認
git branch
出力結果
$ git branch
* feature
  main

2.リモートリポジトリのブランチを確認

リモートリポジトリのブランチを確認
git branch -r
出力結果
$ git branch -r   
  origin/feature
  origin/main

3.特定のブランチの最新状態を取得

特定のブランチを最新状態を取得
git fetch origin <branch>

Gitのブランチ管理とワークフロー

1.ローカルリポジトリのブランチを確認

ローカルリポジトリのブランチを確認
git branch
出力結果(featureブランチにリモートリポジトリのブランチ最新状態を反映させる)
$ git branch
* feature
  main

2.リモートリポジトリのブランチを確認

リモートリポジトリのブランチを確認
git branch -r
出力結果(どのリモートリポジトリのブランチを反映させるかを決める)
$ git branch -r   
  origin/feature
  origin/main

3.特定のブランチの最新状態を取得

特定のブランチを最新状態を取得
git fetch origin feature

ここまでで、リモートとローカルリポジトリのブランチの状態が同じになっている。

4.ローカルの開発環境で新しい機能や修正の追加

5.リモートリポジトリにそのブランチをプッシュ

git add .                 
git commit -m "フェッチのテスト"
git push -u origin/feature
出力結果
出力結果
$ git add .                 
$ git commit -m "フェッチのテスト"
[feature 416367e] フェッチのテスト
 1 file changed, 1 insertion(+)
$ git push -u origin/feature
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 436 bytes | 436.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.

6.プルリクエストを送る(featureブランチとmainブランチに統合)

7.不要になったブランチを削除する


※GitHub上でブランチを削除しても、git branch -rで表示されるリモートリポジトリのブランチの情報はローカルリポジトリには自動的に反映されない。

8.ローカルリポジトリのブランチを削除する

8-1.ブランチを切り替える

ブランチを切り替える(削除したいブランチにいると削除できないため)
git checkout main
出力結果
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

8-2.ブランチを削除する

該当するブランチを削除する
git branch -d feature
$ git branch -d feature
warning: deleting branch 'feature' that has been merged to
         'refs/remotes/origin/feature', but not yet merged to HEAD
Deleted branch feature (was 416367e).

#### 8-3.削除されたか確認する
```sh:
$ git branch -vv       
* main    bea05f7 [origin/main] Merge pull request #2 from pyusuket/feature

まとめ

git fetchとは、リモートリポジトリから情報を取得するためのコマンドである。ローカルの指定したブランチへ最新状態を読み取り、コードを編集していき、GitHubにてコードの確認およびプルリクエストを行う。その後、不要なブランチを削除し、リポジトリを整理することが重要である。

Discussion