13
9

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 Hub運用

Last updated at Posted at 2023-09-22

はじめに

1週間〜1ヶ月規模のハッカソンにおけるGithubの運用を仲間内で共有するために書いています。Githubの環境が整えられる人材がいて、メンバーに共有する想定であるため、詳しい解説は省いています。

GitHubとは

Wikipediaには 

GitHubは、ソフトウェア開発のプラットフォームであり、ソースコードをホスティングする。コードのバージョン管理システムにはGitを使用する。

とあります。簡単に説明すると、チームみんなで書いたコードを一つの場所で管理してくれるサービスです。

Gitとの違い

メンバーそれぞれの環境にコードのバージョン管理システムであるGitをインストールし、それをインターネット上で管理するのがGitHubです。

では使い方を目的ごとに説明していきます。

※Gitのインストールや、GitHubのアカウント作成については説明を省略します。
以下の記事を参考に導入してください。

チームで開発する(Organizations)

OrganizationsとはGitHub上で作れるチームのことです。
以下のような画面で構成されます。

スクリーンショット 2023-09-16 10.50.10.png

タスク管理

Projectsは、Todoリストを管理できます。
スクリーンショット 2023-09-17 17.43.21.png

今回はBoardを使用していきます。
スクリーンショット 2023-09-17 17.46.07.png

タスクを作る

Projectsを選択すると、TodoInProgressDoneの順に並んでいます。
Todoがタスクを追加していく場所です。「たぶん必要かな?」くらいの軽い気持ちで追加して良いと思います。以下のようにAdd itemでタスクを追加します。

スクリーンショット 2023-09-19 13.59.57.png

追加されたタスクはDraftという下書きです。Draftの右にあるメニューからConvert to issueを選択すると、下書きから実装するタスク(issue)へと変化します。
スクリーンショット 2023-09-19 14.00.32.png

タスクを始める

Todoにあるissueをドラッグ&ドロップでIn Progressに移動します。In Progressは進行中という状態です。
スクリーンショット 2023-09-19 14.02.22.png
誰が進行しているのか設定する必要があります。
タスク名をクリックし、右側の項目のAdd Assignees...から自分のアカウントを選択します。
スクリーンショット 2023-09-19 14.03.25.png
閉じると画面のような状態になります。これで誰がどのタスクをしているのか管理することができます。
スクリーンショット 2023-09-19 14.03.41.png
次にここで作ったタスクを元にブランチを切ることで開発を進めていきます。

分担して作業する(branch)

branchとはWikipediaによると

ブランチ(branch)とは、バージョン管理システムの管理下にあるオブジェクト(ソースコードファイル、ディレクトリツリーなど)を複製し、それぞれ同時並行して変更が行えるようにしたものである。

まさにのイメージで、分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。

※ブランチを作ることをブランチを切る、ブランチを合体させることをmergeと呼びます。

今回の構成


 main ー ー develop ー ー ー feature/#1
                  |
                     ー ー feature/#2
                  |
                     ー ー feature/#3

main

本番用のブランチです。ユーザーが触る環境であるため、エラーやバグがある状態にしてはいけません。動作確認を終えたらdevelopブランチをmergeします。

develop

開発用のブランチです。開発メンバーがそれぞれfeature/#[issue番号]ブランチをmergeしていきます。

feature/#[issue番号]

機能ごとに切るブランチです。該当するissueについている番号を入れて名前を一意にします。最終的にはdevelopにmergeします。
※この場合feature/#1
Group 36.png

操作

メンバーのコードを自分の環境に反映する

新しくブランチを切って作業する前に、自分の環境を最新にしなくてはいけません。
この作業を怠ってしまうとGitHub上に同じファイルの変更が衝突してしまうconflictを起こしやすくなります。今回の構成ではdevelopブランチにメンバーの変更がマージされていくため、developで以下のコマンドを叩きます。

git pull

ブランチを切って移動する

現在いるブランチから新しいブランチを切り、そのブランチに移動します。

git checkout -b "[ブランチ名]"

ブランチを移動する

ブランチを移動します。

git checkout "[ブランチ名]"

ブランチを合体させる

今いるブランチに別のブランチを指定して合体させます。

git merge "[ブランチ名]"

最低限この三つがわかっていれば大丈夫です。他にもたくさん操作がありますので、困ったらその都度調べましょう。

書いたコードをGitHubに反映する

自分が書いたコードをGitHubに反映します。載せているのは最小限のコマンドなので詳しくは調べてみてください。

反映するファイルを選ぶ

この操作をするとステージ状態になり、commitできるようになります。
この操作はVSCodeのGUIのほうが早いかもしれません。

全てのファイル

git add -A

指定したファイル

git add [ファイルパス]

変更内容を記録する(自分の環境のみ)

先ほどステージされたファイルを記録します。
変更の内容は提唱されているフォーマットがあるのでそれに従うべきですが、
ハッカソンにおいては事細かく書かなくても十分な場合が多いです。

git commit -m "[変更の内容]"

変更内容をGitHubに送る

以下のコマンドを実行するとGitHubでPull Requestを作成できます。

git push origin [ブランチ名]

Pull Request

Pull Requestとは

Gitのホスティングサービスが提供する機能の一つで、作業者が他者にソースコードの差分のレビューと開発用・公開用ブランチへのマージを依頼する機能のことです。

つまり、自分の変更をGithubに反映させたいというリクエストです。許可制にすることでエラーが出てないかチェックしたり、ソースコードの衝突を検知できます。

pushすると以下のような表示が出ます。ここからPull Requestを作れます。
Group 37.png

変更内容を合体する

※この作業は通常、上司が内容をレビューし、上司が行います。ハッカソンにおいては人のコードを確認する時間がない場合が多いため、自分で行っています。

Pull Requestを確認してmergeします。以下のように特にエラーが見当たらず、no conflictsであればMerge pull requestを押します。もし、エラーやconflictsとあれば環境を整えてくれた人に相談しましょう。

スクリーンショット 2023-09-20 18.55.57.png

ここで次のようにclose: #[issue番号]と打ってmergeすればissueを閉じることができます。

スクリーンショット 2023-09-20 18.56.33.png

このように終わったissueは閉じられてDoneに入ります。
スクリーンショット 2023-09-20 18.57.25.png

追記

branchをissue番号で切るやり方をしていますが、番号ではこのブランチが何をしているかわからないという状況になりがちなので、feature/login(機能名)のように切るといいと思います!

まとめ

この流れを後は繰り返していきます。上から順番にもう一度整理すると、

Projectsでissueを立てる

developブランチでpullした後、issueに合ったbranchを切る

作業が完了したらgit add, git commit, git push の順で変更をGitHubに送る

GitHubでプルリクを作り、問題がなければ自分でmergeする

初めに戻る

以上です、お疲れ様でした。
わかりにくいところや間違った認識がございましたらコメントいただけると嬉しいです。

13
9
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
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?