0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者向けGit ハンズオン

Last updated at Posted at 2026-01-05

記事の前提・ゴール

  • 前提

  • ゴール

    • main から作業ブランチを切り、変更を GitHub に push
    • Pull Request を作成し、自身や他者によりマージされる
    • マージ後、最新状態を取得して次の作業を始められる

0. 今回のハンズオンでやること

今回のハンズオンでは、「GitHub上にあるリポジトリのクローン → コードの変更 → 次の作業の準備」 までを実際に行います。
説明は、下記フローに沿って行います。

本作業は必ず自身が作成したリポジトリで行ってください。
公開されているOSS等のリポジトリで内容のないPRを出すと、管理している方に多大な迷惑をかけることになります。


1. Git Graph の最低限の見方

目的:操作前に「今の状態」を視覚的に把握できるようにする
スクリーンショット 2026-01-05 150213.png

赤枠で囲ったアイコンをクリックすることで、ツリーを表示することができる。

  • Git Graph の構成要素は3点

    • ブランチ(線)
    • コミット(塗りつぶされた点)
    • 自分のいる場所(塗りつぶされていない点)

main origin のような表記のブランチはリモートブランチ、ローカルブランチ両方が同じ環境になっていることを表す。
feature/add-hello-world-page のように、origin のないものはローカルブランチの状態を表す。
origin/HEAD のようにorigin/ から始まるブランチは、リモートのブランチの状態を表す。

origin/HEAD は、リモートリポジトリでの「デフォルトブランチ」を指す参照です。今回は意味が分からなくても問題ありません。


2. clone:リモートのコードを手元に持ってくる

目的:作業のスタート地点を作る

GitHub上のリポジトリページから、clone 用のURLをコピーする。
image.png

  • 実行コマンド(xxx/yyy は環境によって異なる)

    $ git clone https://github.com/xxx/yyy.git
    $ cd yyy
    
  • clone で何が起きたか

    • リポジトリを丸ごとコピー
    • ローカルにて、origin というリモートが登録される
  • Git Graph を確認

    • main が1本ある状態

image.png


3. 作業ブランチを切る(switch)

目的:main を直接変更せずに作業する

例として、Spring の環境構築を行うブランチの作成を行う。
簡単に確認したい場合、sample.md のようなファイルを作成し、任意の文字列を記述すると後続のコマンドを実施できる。

$ git switch -c feature/add-spring-setup
  • なぜブランチを移動するか?
    • 特に集団開発において、全員が共通で触るmain ブランチを直接触ると、コンフリクトの危険が高まるため
    • 自身の作業に明確な名前を付けることで、作業の内容をわかりやすくするため
    • 後述するPR作成のため
  • Git Graph での変化
    • 現在地がfeature/add-spring-setupブランチへ移動する

image.png


4. add / commit:変更を「履歴」として保存する

目的:変更を Git に記録する

今回は Spring Boot を用いた環境構築実施後の内容を記録する。

  • 状態確認

    • ここでは現在どこのブランチにいるか、変更したファイル、新規作成したファイルを確認することができる
    $ git status
    =>
    On branch feature/add-spring-setup
    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:   .gitignore
      
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
           .gitattributes
           .mvn/
           mvnw
           mvnw.cmd
           pom.xml
           src/
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
  • add

    • コミットするファイルを選択するコマンド。今回はすべてコミットするため、変更を全選択をする。なお、この動作をステージングと呼ぶ
    git add .
    
  • commit(履歴を作成する)

    git commit -m "add: Maven + Spring Boot の環境構築を実施"
    
  • 状態確認

    $ git status
    =>
    On branch feature/add-spring-setup
    nothing to commit, working tree clean
    
  • よくある勘違い

    • commit 時点ではリモートリポジトリ上(GitHub)には履歴は反映されていない
  • Git Graph での変化

    • feature ブランチにコミットが1つ増える
      image.png

コミット時(また、後述するPR作成時)に記載するコメントへ @ を記載しないようにしましょう。@ はメンションを表す記号として扱われるため、GitHub上のユーザへメンションが飛んでしまいます。


5. push:変更を GitHub に送る

目的:ローカルの履歴をリモートに共有する

git push origin HEAD

Git上で HEAD と記入した場合、現在いるブランチを表す。
長いブランチ名を毎回書かずに済むよう、このような書き方をしている。

  • GitHub での変化

    • {id}/{repository-name}/branches にて、作業ブランチが見えるようになる
      image.png
  • Git Graphでの変化

    • feature/add-spring-setup ブランチが origin にも反映されていることがわかる
      image.png

6. Pull Request を作る → merge される

目的:レビューを経て main に取り込む

Pull Request とは

PRとは、自身の作成したコードが問題ないか、他者に確認(レビュー)してもらうための機能である。集団開発においては、基本的にレビューを通じて成果物の品質を担保する。

PRの必要性

レビューを行わず直接 main ブランチへpush を行ったり、個人の判断でmerge を行うことは、予期せぬ不具合の混入・コンフリクトの発生、品質の低下など他メンバーへの混乱を招く。
今回は個人での開発であるものの、集団開発の流れを体験するためPR の作成からmerge の流れを実施する。

  • ブランチをpush後、GitHub 上で 下記のような表示が現れる。 Compare & pull requestをクリック
    image.png
  • 下記のように設定しCreate pull request をクリック
    • base: main
    • compare: feature/add-spring-setup
    • Reviewers: 必要に応じて、GitHubアカウントを検索する
    • Assignees: assign yourself をクリック。自身が選択される
    • Add a description: 適宜内容を記載。プロジェクトによって異なるが、今回は下記のように記載
      ## 実施したこと
      
      ## 確認したこと
      
      ## 実施してないこと
      

image.png

  • 下部にあるMerge pull request をクリックする

  • merge された後に起きること

    • リモートブランチのmain にコミットが取り込まれる
    • feature ブランチは役目を終える
  • Git Graphでの変化

    • ローカル環境では変化なし
    • GitGraph上 では変化がないように見えるが、GitHub(リモート)の main ブランチには feature/add-spring-setup の変更が取り込まれている

前述のとおり、PR作成時に記載するコメントへ @ を記載しないようにしましょう。


7. PR マージ後、新しい作業を始める

目的:次の feature を正しい状態から切る

以降、新しい機能開発を行う場合は毎回下記を行う。

git switch main
git pull
git switch -c feature/add-hello-world-page
  • なぜ pull が必要か

    • 前工程にてGitHubでマージを実施したが、ローカルのブランチにはマージした履歴が反映されていない。このように、GitHub上でのマージ直後や他者の変更がある場合など、ローカルのmain ブランチは最新でない場合が往々にしてある(画像参照)。そのため、pull をすることでリモートブランチとローカルブランチの状況を揃える必要がある
      image.png
  • Git Graphでの変化

    • 最新の main から再び作業ブランチが分岐している
      image.png

8. revert:変更を取り消したいとき。

目的:履歴を壊さずに取り消す

下記のような誤ったファイルをコミットした状況を例にとる。
image.png

誤った変更、不要になった変更を、他のコミットに影響がないよう安全に除去するためにrevert を行う。

  • 実行例

    • Commit: の横にある文字列がcommit id。引数にはこのid を記入する
    git revert 9d8fd7ca0bad35ce3390fa8f269c353661b283ab
    
  • Git Graphでの変化

    • 打ち消し用のコミットが追加される
      image.png

※ revert は直前のコミットだけではなく、より前のコミットに対しても実施できる。


Appendix

今どのブランチにいるか

git branch

作業状況(ブランチ・変更状態)を確認する

git status

ブランチを最新にする

git pull

作業開始の定型手順

switch main → pull → switch -c

参考:https://git.dokyumento.jp/docs

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?