どうもこんにちは,Megです.
今回は,研究でGitとGitHubを上手く使い,研究生活を効率化させるための記事です.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
普段の研究でのGitの使い方だから参考にしてみて!
はじめに
前提条件として,
- 個人のローカルマシンにおいて,Gitの環境構築
- GitHubで個人アカウント作成が完了
- AcademiXリモートリポジトリの編集権限の付与
上記2点が済んでいることとします.
また,複数人での開発ではなく,基本的に一人でコードを書いていく方向けです.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
少し改変すれば複数人の開発でも使えるよ
フォルダ構造
リポジトリの構成は,Cookiecutter Data Scienceのものを使用しています.
上記ページに詳細・インストール方が記載されています.以下,自分のテンプレートのオプション選択を記載します.
Select open_source_license:
1 - MIT
2 - BSD-3-Clause
3 - No license file
Choose from 1, 2, 3 (1, 2, 3) [1]: 1
Select python_interpreter:
1 - python3
2 - python
Choose from 1, 2 (1, 2) [1]: 1
ライセンスはMITライセンス,pythonはpython3を使用しています.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
研究でのライセンスはどれが良いのかはわかっていない…
ブランチ運用
GitHubにおけるブランチ運用法は,以下のサイトに多く記載されています.
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9R2l0JUUzJTgxJUFCJUUzJTgxJThBJUUzJTgxJTkxJUUzJTgyJThCJUUzJTgzJTk2JUUzJTgzJUE5JUUzJTgzJUIzJUUzJTgzJTgxJUU2JTg4JUE2JUU3JTk1JUE1JUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JUU4JUFBJUJGJUUzJTgxJUI5JUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgxJTlGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yN2RjN2M2Y2UyZTVlNTY0NDAxYzc5Y2ZiYzY0MzA5Zg&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdHJzbl9zaSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YWQ5ZTBlN2MyYTZjYjk1OTA0OTJjYjg3NTQzMTBlOGY&blend-x=142&blend-y=491&blend-mode=normal&s=09d2018bd003d6a6fa87b98a7abff4d9)
研究活動が前提なので,開発メンバーが基本的に自分一人であることと,運用方法の学習コストを下げるために,GitHub flowを採用しています.
GitHub flow
GitHub社で利用されている開発フローです.main
ブランチとfeature
ブランチの2つのみで構成されていることが特徴です.
詳細は以下のサイトを参照してください.
![](https://biotech-univ.com/wp-content/uploads/cocoon-resources/blog-card-cache/513a2fe403a179cd13970f0e76bdc69e.png)
以下,GitHub flowによる開発の流れを示します.
- issueを作成
- issueからブランチを作成
- ブランチ上で作業
- コミットメッセージを作成
- pull requestを作成
- レビューコメントに対応
- pull requestをマージ
- ブランチを削除
- issueを封鎖
issueを作成
作業のスタートとして,GitHub上でissueを作成するところから始めます.
このようなissue中心で開発を進めていくことを,issueドリブン開発と呼びます.
GitHubページ右上のNew issue
からissueを作成します.
issueタイトル
issueタイトルは英数字で30字以内で記述します.
「30字以内」はあくまで目安であり,簡潔に作業内容を要約することを心がけましょう.
issueは1トピックで作成
これは,指導教官や先輩からレビューを受ける際に,1トピックの方がレビューする内容が少なく,作業者とレビュアー共の心理的負担を下げることができます.
ゆえに,こまめなレビューを行ってもらうことができ,研究に関与する全員が研究の全容を把握できます.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
研究は進んでいない時こそすぐ共有.これはMegとの約束なっ
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-1024x694.png)
issue内容
Leave a comment
の欄に,作業内容を記載します.
チェックボックスなどを活用し,ToDoレベルに作業内容を記載することがコツです.
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-1-1024x650.png)
内容を記載し終えたら,右下のsubmit new issue
を押してissueを発行します.
issueからブランチを作成
issue作成後,下図の右下にあるDevelopmentのCreate a branch
から新しいbranchを作成します.
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-2-1024x464.png)
ブランチ命名規則
Create a branch
を押すと,ブランチの作成画面に移ります.
ここでbranch nameは,issue IDとタイトルのスペースにハイフンを入れたものになっています.
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-3-1024x934.png)
ブランチを作成
タイトルを変更後,Create branch
を押してブランチを作成する.
すると,以下の画面に遷移する.
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-4-1024x400.png)
下記コマンドをコピーし,エディタやターミナルにペーストすることで,ブランチを切り替える.
git fetch origin
git checkout 2-make-git-rule
作成したブランチ上で作業
ブランチが作成できたので,実際に作業を進めていきます.開発環境は,それぞれの研究室に従ってください!
ただ,Google Colaboratoryを開発環境として使用する例を挙げておきます.
Google Colaboratoryにアクセスすると,GitHub上のファイルを操作できます.作成したブランチを選択後,ファイルを新規作成・編集し作業をしていきます.
![](https://biotech-univ.com/wp-content/uploads/2022/12/image-5-1024x700.png)
コミットメッセージを作成
以下に推奨するコミットタイミングを示します.
- issueのチェックボックスを完了したタイミング
- その日の業務を終了するタイミング
- 下記に示す,Prefixに当たる作業を完了したタイミング
コミット関連のコマンド操作は,ローカルリポジトリが登録されているマシン上で行います.
コミットメッセージ形式
コミットメッセージは3行に渡って記述しましょう.
1行目:タイトル
2行目:空行
3行目:本文
コミットタイトル
以下にコミットタイトルの命名規則を示します.
Prefixを記載
Prefixとは,テキストの先頭につける単語のことです.
Angular.js/DEVELOPERS.mdのPrefixを採用しています.
feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space,formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
test: Adding missing or correcting existing tests
chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
日本語で目的語+動名詞の形で記述
研究室のメンバーは日本語を母語としている方のみなので,コミットメッセージのタイトル(本文)は日本語で記載します.
タイトルの形式を揃えるために,目的語+動名詞の形式でタイトルを記述しましょう.
これは,主語が不必要であり,文体の時制も揃うというメリットがあります.
Ex)
○ ブランチとコミットの命名規則に関する資料を作成
☓ 私はブランチとコミットの命名規則に関する資料を作成した
コミットタイトルは30字以内で記述
「30字以内」はあくまで目安であり,簡潔に作業内容を要約することを心がけましょう.
句点が入る分量は長いので,内容を要約できないか見直すことをオススメします.
Ex)
○ ブランチとコミットの命名規則に関する資料を作成
☓ 大学における学生の研究活動を主な対象とした,GitHubにおけるブランチとコミットの命名規則に関する資料を,Markdown形式で作成
コミット本文
作業した内容を日本語で記述します.レビューする相手のことを考え,主語・述語を適切に書きましょう.
「何をなぜ作業したのか」に重点を置いて書くことがポイントです.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
コミットタイトルと本文は,日本語が非母語の方がいたら英語で書くと良いかも
Ex)
大学における学生の研究活動を主な対象とした,Gitのブランチ・コミット名の命名規則に関する資料を作成.
GitHub flowによるブランチ運営方法を採用.
コミットメッセージを記述するエディタ
コミットメッセージを記載する際,
git commit
コマンドを使用します.
デフォルトだとターミナルでコミットメッセージを記述することになりますが,使用感が良くないので手元のエディタでコミットメッセージを編集できるようにすることをオススメします.
以下,コミットメッセージをVS Codeに変更するコマンドを以下に示します.
$ git config --global core.editor 'code --wait'
詳細は以下の記事を参照してください.
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9R2l0JUUzJTgxJUFFJUUzJTgyJUE4JUUzJTgzJTg3JUUzJTgyJUEzJUUzJTgyJUJGJUUzJTgzJUJDJUUzJTgyJTkyVlNjb2RlJUUzJTgxJUFCJUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgxJTk5JUUzJTgyJThCJUU2JTk2JUI5JUU2JUIzJTk1JTI4TWFjJUUzJTgzJUE2JUUzJTgzJUJDJUUzJTgyJUI2JUUzJTgzJUJDJUU1JTkwJTkxJUUzJTgxJTkxJTI5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xYzdiZWE1NDM4ZWUxMGU0ZGJmN2Y3ODJiZDBkNjcyMQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa3prX2VuZ2luZWVyJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yNDNhM2Y2ODA5M2M1YThhZTc5ZGFkMWIzNWMyZTI5Yw&blend-x=142&blend-y=491&blend-mode=normal&s=d506610e5eb1abd598506a5345d98fbf)
pull requestを作成
以下のコマンドにより,作業を加えたブランチをリモートリポジトリに送ることで,pull requestを作成できます.
git push origin 送るブランチ名
基本,1ブランチにつき変更を加える開発者は1名になるので,コードの保存も兼ねてこまめにpush
しましょう.
pull requestを送るタイミングは,issueの問題が自己解決した時を基本としていますが,開発途中でも他の研究室メンバーと議論したい時にも作成することは効果的です.
レビューコメントを記述&対応
後輩指導などで,自分にpull requestが送られてきたら,そのブランチをローカルリポジトリに取り込み,コードレビューをしましょう.
git pull origin 取り込むブランチ名
レビューをして,変更を加えた方が良い箇所には,pull requestに記載しましょう.
特に問題がなければ,「レビューしました」等とpull requestに返信し,レビューをした旨を伝えましょう.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
ここで労いの言葉の一つでもかけたら研究室内の株は急上昇だね!
リモートリポジトリとローカルリポジトリのmainブランチを同期
タイミングは個々人の裁量によりますが,リモートリポジトリとローカルリポジトリのmainブランチをこまめに同期することをオススメします.
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
なるべくリモートとローカルリポジトリは同期させときたい
ローカルリポジトリのmain
ブランチに移り,以下のコマンドを実行すると,リモートリポジトリとローカルリポジトリを同期することができます.
git pull origin main
pull requestをマージ
自分以外のメンバーからレビューを受けて,問題が無かったら,ブランチをmain
ブランチにマージしていきます.
GitHub上のpull requestページから,pull requestを作成した本人がMerge pull request
を押して,main
ブランチに内容をマージします.
![](https://biotech-univ.com/wp-content/uploads/2022/12/2022-12-10-21-40-54.png)
ブランチを削除
マージした後,Delete branch
を押して自分が作成したブランチを削除しましょう.
issueを封鎖
pull requestをマージした後,GitHubからClose issue
を押してissueを封鎖します.
![](https://biotech-univ.com/wp-content/uploads/2022/12/2022-12-10-20-01-44-1.png)
最後に
以上で研究室でのGit運用法の説明を終わります.素敵なGit生活を!
![Meg](https://biotech-univ.com/wp-content/uploads/2023/11/cropped-3fb15cf3-c63c-468d-8a32-1f5a5355a84f-removebg.png)
Gitに慣れると全てをバージョン管理したくなるよ