4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

チーム開発に必要なGitHubと仲良くなりたい!②

Last updated at Posted at 2025-12-14

この記事について

⭐️こんな方に読んでほしい

ITスクールのRareTECHで勉強している初心者が、ハッカソンに参加しています。

ハッカソンについては「IT未経験がハッカソンに参加してみた」をご覧ください。

これからハッカソンに参加しようと思っている方、ITの勉強を始めたばかりの方に参考にしていただけたら嬉しいです。

この記事は「チーム開発に必要なGitHubと仲良くなりたい!」の続きになります。

マージ先の設定ミスで度々誤爆→対策はルールセット

チームのGitHubは以下の流れで運用することになりました。

  • チームで使用するブランチは、mainとdevelopの二つ。
  • 普段は開発用のdevelopブランチを使用し、メンバーは作業用ブランチ(feature1・feature2・・・)を切って、developブランチにmargeを行う。
  • アプリが完成したら、developからmainにマージする。

初心者たちの集まりなので、こんな簡単なルールでもつまずきます:cry:

mainブランチがデフォルトになっていたため、度々mainブランチにpushしちゃいました。そして、勝手にマージされる設定になっていました。

error.png

調べたところ、GitHubにはルールセットという便利な機能があるとわかりました。
以下のルールセットを適用しました。

1,ルールセットの適用

  • Pull Requestを経由する必要がある。(直接のPushは禁止)

  • force pushは禁止。

    1,チームのリポジトリのsettingをクリック

    2,左側のRules→Rulesetsをクリック
    ruleset2.png

    3,Ruleset Nameを入力。Enforcement statusをactiveにする。

    4,Target branchesにルールセットを適用したいブランチが入っているか確認する(今回はdevelop)
    ruleset3.png

    5,Restrict deletions(Only allow users with bypass permissions to delete matching refs.特定の権限を持つユーザーのみが、ブランチを削除できるようにする)、
    Require a pull request before merging(Require all commits be made to a non-target branch and submitted via a pull request before they can be merged.すべてのコミットはプルリクエスト経由で提出された後にのみマージ可能とする。Show additional settingsで承認の必要回数やその他が細かく設定可能)、
    Block force pushes(Prevent users with push access from force pushing to refs.強制的なpushができないようにする)にチェックを入れる。
    ruleset4.png

    6,createボタンを押したら、ルールセットが適用する。

これで誤爆も最低限防ぎ、誤った操作をしても大丈夫という心理的安全性も確保できます👌

Organizationはowners権限でルールセットが作成できます。

2、デフォルトのブランチをdevelopに変更することによって、pull requestのマージ先が自動でdevelopになるように設定。

  • チームのリポジトリのsettingをクリック
  • Default branch をmain→developに変更する

ruleset1.png

default branchをどれにするかは、それぞれのチームによると思いますので、参考程度に読んでください。

GitHub使い始めたばかりの頃は、ここら辺が全然わからず、混乱のままpushしては、「マージ先間違えた!勝手にマージされてる!どうしようどうしよう😣」を繰り返していました。

マージ済のコミットをrevertしたら、複数のコミット履歴が紐づいており、差分が反映されなくなってしまった

開発中、基本的には概ね順調でしたが、いかんせん初心者の集まりです。

コードレビューなんてできないとは予想がついていたため、

コード書く→リモートリポジトリにpushする→プルリクエストを出す→チームの誰か1人が承認すればマージする、という流れにしておりました。

とにかく、ハッカソンの目的は技術の習得だったため、手を動かすことを最優先としておりました。そして、アプリが最終的に動く形で完成させることが最終ゴールでした。

そんな中、以下の事件が発生していました。

メンバー1:「すでにマージ済みのtaskAだけど、自分が出すtaskBの影響で、修正が発生するかも。」

メンバー2:「修正内容は大きい?小さい?」

メンバー1:「大きいと思う。」

メンバー2:「そしたら、マージ済みのtaskAを git revert して、先にtaskBをPRしてマージしてから、修正を反映して、もう一度taskAを出すよ。」

メンバー1:「OK!じゃあ、マージしたtaskAを git revertするね。」

git revertを実施。

その後・・・

メンバー3:「PR-taskAは自分が出した、taskCのコミットも含んでいたから、変更の差分が元に戻ってしまった!」

メンバー3:「もう一度taskCをPRしようとしても、変更の差分が反映しない・・・」

メンバー3:「再度developブランチから新しくtaskC-2(featureブランチ)を切って、手動で変更分を作成し、pull requestしたら差分が反映された。けれど、git revertしたtaskCは変更が多く10ファイル以上もあるから、手動で作成するのはとても大変だぞ・・・!」

状況は以下の図のようになっていました。

gitrevert.png

Gitは「taskCの変更は『commit履歴:2』で、すでに取り込んでおり、その後 git revertで取り消した。だからもう変更をマージする必要はない」と判断したみたいです。

git revertは修正前のコミットを作成する、便利な機能ですが、使うのにはとても注意が必要なことがわかりました!

この問題の対処法について。

1、git revertしたコミットを再度 git revertして、taskAとtaskCを反映させたコミットまで戻す。

  • メリット:taskAとtaskCの両方の変更が反映している状況まで戻る。
  • デメリット:taskBの影響を確認できていない。

2、新たにdevelopからtaskC-2ブランチを切って、手動で変更分を再作成する。

  • メリット:taskCの修正を反映できる。
  • デメリット:git revert前のマージでtaskCのすでに取り込んだ変更が多かったら、再度コードを書くのが大変。

今回は1を採用し、無事、taskCの変更を反映している状態まで戻すことができました。

git revertを使用する際の参考になれば幸いです・・・。

VScodeでGitのステージング、commit、pushの仕方

VScode上でGitの操作が行えたら便利ですよね。
ターミナルでのいいのですが、タブを移動するのがめんどくさい時、よくここを使っていました。
1,左の赤丸のところをクリック。
VS1.png
2,変更を加えたファイルが出てくるので、「+」を押したらステージングされます。
VS2.png
3,コメント記載して、コミットします。
VS3.png
4,変更の同期を押したら、リモートリポジトリにpushされます。リモートブランチに、ローカルで作業していたfeatureブランチがなかったら、このタイミングで作ってpushもできます。
VS4.png
5,ファイル名を押すと左(変更前)と右(変更後)の変更が見ることができるので、細かく行単位でステージングし、コミットすることもできます。
VS5.png

参考:VScodeでpullrequestやissueを作成できる拡張機能もありました。
https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github

まとめ

ミスは必ず発生します。そのミスをどれだけ事前に防ぐことができるか、が作業短縮の一つの大事なことだと感じました。

参考記事一覧

GitHub公式ドキュメント

参考にさせていただいた技術記事

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?