実際のシステム開発をイメージしたissue作成~closeまでの流れを再現していきたいと思います。
今回はC言語で"Hello World!"を出力できるソースコードを作成してリモートリポジトリに登録していきます。

"なんちゃってプログラマ"の略でなんグラマです。プログラムを書いたり、ガジェットを紹介したりします。
・お問い合わせ
・プライバシーポリシー
issueとは
公式サイトには、以下のように書かれています。
リポジトリに問題を作成して、作業の計画、議論、追跡を行うことができます。
"問題"というのはバグや実装したい機能のことを指していて、これらを管理するためにissueがあります。
ざっくりと、何ができるのかをまとめます。
- アサインで、責任者を割り当てられる
- ラベルで、どのようなissueなのか一目で分かる
- プロジェクトに紐づけて、
- マイルストーンで、進捗管理ができる
issueの使い方
今回の仕様
前回の記事で、"Hello, Worid!"を標準出力するプログラムを作成しました。
今回は、前回作成したプログラムに手を加えていきます。
今回の仕様
C言語で"Hello, Worid!"の標準出力の文字列の前に、タイムスタンプを付与する。
実行結果イメージ:"[YYYY-MM-DD HH:MM:SS] Hello, World!"
issueを登録する
GitHubのsampleリポジトリの管理画面から"isseus"を押す。

「New issue」を押す。

以下のように入力して、「Create」を押す。
・title:
出力にタイムスタンプを付加する機能を追加
・description
### 概要
Hello, World! プログラムの先頭に
実行日時を `[YYYY-MM-DD HH:MM:SS]` 形式で付与して出力する
### 受け入れ基準
1. `gcc main.c -o hello` でビルドが成功する
2. `./hello` 実行で `[2025-06-27 10:15:30] Hello, World!` のように出力
3. `strftime` を利用してフォーマット

issueが作成されました。

ローカル環境を最新化する
「Git Bash」を開き、プロジェクトフォルダへ"cd"(チェンジ ディレクトリ)コマンドで作業ディレクトリへ移動します。
以下のコマンドを実行します。
git checkout main
git pull origin main
ローカル環境でブランチを切る
ローカル環境でブランチを「git checkout -b」コマンドで作成します。
このコマンドは、ブランチを作成した後に、作成したブランチに切り替えるという意味です。
ブランチ名は、今回は"feature/issue-1-hello-world"とします。
以下のコマンドを実行します。
git checkout -b feature/issue-1-timestamp
【今回のブランチ名の意味】
・feature:機能追加
・issue-1:GitHbuの番号
・timestamp:実装する内容を簡易的に示したもの
【ブランチの確認をする】
今のリポジトリに何のブランチがあるか確認するコマンドは、「git branch」です。

実装する
"Hello, World!"と標準出力されるC言語ファイルをmain.cをプロジェクトのディレクトリに作成します。
以下のコードをコピーし、作成したmain.cに張り付けてください。
前回の記事で作成した、"Hello, World!"と標準出力されるプログラムを書き換えていきます。
以下のコマンドを実行してください。
cat << 'EOF' > main.c
#include <stdio.h>
#include <time.h>
int main(void) {
time_t now = time(NULL);
struct tm *t = localtime(&now);
char buf[20];
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", t);
printf("[%s] Hello, World!\n", buf);
return 0;
}
EOF
テスト
テキトーに選んだブラウザ上のC言語実行環境で実行すると動いたのでOKとします。

コミット
Git Bushで以下のコマンドを実行します。
git add main.c
git commit -m 'feature: タイムスタンプ付き Hello, World! を出力 (#1)'
以下のような表示なればOKです。

【コマンドの意味】
・git add main.c
mainl.cをインデックスに登録します
・git commit -m 'feature: Hello, World!を出力する機能を追加 (#1)'
コミットします。#1はissue番号で、GitHub上で自動的にissueとリンクされます。
リモートにpushする
「git push」コマンドを実行して、リモートリポジトリへプッシュします。
このとき、リモートリポジトリにブランチを作成するようにします。
以下のコマンドを実行します。
git push -u origin feature/issue-1-timestamp
GitHubを開くと、無事にプッシュできていることが分かります。

プルリクエストを出す
GitHubのsampleリポジトリの管理画面から"Pull request"を押す。

「Compare & pull request」を押す。

descriptionを入力し、「Create pull request」を押す。
### 概要
Hello, World!の前に実行時のタイムスタンプを表示する機能を追加
### 動作確認手順
```bash
gcc main.c -o hello
./hello
# => [2025-06-27 10:15:30] Hello, World!
【その他の設定】
・Reviewers
レビュワーを指定できる。今回はプロジェクトメンバが誰もいないので設定しない。
・Assignees
プルリクの責任者をアサインできる。
・Labels
このプルリクが何なのかをタグ付できる(「feature」「bug」など)
・Projects
プルリクをプロジェクトに紐づけできる
・Milestone
マイルストーンを設定できる

これで、プルリクを出すことができました。
レビュワーがいる場合は、レビューが完了するまで待ちます。
マージする
レビューが終了したら、作成したコードをmainにマージしていきます。
「Merge pull request」を押す。

「Confirm merge」を押す。

"Pull request successfully merged and closed"と表示されました。これで、プルリク~マージまで完了しました。
今回作成したブランチは不要になるので「Delete branch」を押してブランチを削除してください。

issueをクローズする
issueをクローズします。
issueの管理画面から、今回のissueを開きます。

「Close issue」を押す。
コメントは必ず入れる必要はありません。

これでクローズが完了しました!

後処理(ローカルリポジトリのクリーンアップ)
ローカルリポジトリをクリーンアップして作業終了です。
「Git Bush」で以下のコマンドを実行してください。
リモートの最新情報をmainブランチに取り込み、不要なブランチを削除します。
git checkout main
git pull origin main
git branch -d feature/issue-1-timestamp
以下のようになると成功です。

【なぜクリーンアップするのか】
ブランチが増えすぎると管理が大変になるからです。誤ったブランチで作業をしてしまう可能性があるため、不要なブランチは削除していきます。