マージ済みのbranchを削除するとGitHubの芝はハゲるのか

技術

こんにちは。ざわかける!のざわ(@zw_kakeru)です。
GitHubでマージ済みのリモートブランチを削除したら、芝(ContributionGraph)もハゲてしまうのか調べてみました。
不要になったブランチは削除したいけど、芝がハゲるんだったら嫌だな…という私みたいな人の助けになればと思います。

テスト用のリポジトリを作成

検証用のリポジトリを新規作成する前に、現在の芝の状態を確認しておきましょう。

今日は(昨日も..)まだ何もコミットしていないので芝が生えていない状態です。
この状態からブラウザ上で新たにtestリポジトリを作成します。
デフォルトファイルとしてREADME.mdも追加しておきます。

ここからコマンドラインでの作業になります。
手元にcloneしてローカルブランチtest_branchを作成、そこに適当なファイルa.txtを追加してリモートにプッシュします。

~ » git clone git@github.com:hoge/test.git
Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

~ » cd test

~/test(main) » git checkout -b test_branch
Switched to a new branch 'test_branch'

~/test(test_branch) » echo "aaa" >> a.txt

~/test(test_branch*) » ls
README.md a.txt

~/test(test_branch*) » git add . 

~/test(test_branch*) » git commit -m "add a.txt"
[test_branch e96615d] add a.txt
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

~/test(test_branch) » git push origin test_branch
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 271 bytes | 271.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'test_branch' on GitHub by visiting:
remote:      https://github.com/hoge/test/pull/new/test_branch
remote:
To github.com:hoge/test.git
 * [new branch]      test_branch -> test_branch

ここまでの動作を行なった後にブラウザで確認してみると、ちゃんとmainブランチにプルリクエストが来ていました。

ブランチ数も2になっていることが確認できます。
このプルリクを承認、マージしてあげます。

無事a.txtがマージされていますね。

マージ済のブランチを削除する

さて、ここからがこの記事の本題です。
マージされたブランチを(ローカル、リモートともに)削除してみて、芝がハゲるのかどうかを確認していきます。
その前に現時点での芝の様子を確認しておきます。

芝が生えています。Contribution数は5でした。

では、まずローカルブランチを削除してみます。

~/test(test_branch) » git branch --all
  main
* test_branch
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/test_branch

~/test(test_branch) » git checkout main

~/test(main) » git branch -D test_branch
Deleted branch test_branch (was e96615d).

~/test(main) » git branch --all
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/test_branch

ここまでで一旦芝の様子を確認します。

特に変化はありませんね。
ローカルブランチを削除しただけなので当然でしょう。

次にリモートブランチの方を削除してみます。

~/test(main) » git push --delete origin test_branch
To github.com:hoge/test.git
 - [deleted]         test_branch

~/test(main) » git branch --all
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main

リモート側のtest_branchを削除しました。
ブラウザを確認してみます。

ブランチ数が1になっています。ブランチの削除は無事成功しました。
さて、ここで最後に芝の様子を確認してみます。

なんと、芝はハゲていませんでした。
Contributionも削除前と同じ5となっていました。

結論、マージ済のリモートブランチを削除しても芝がハゲることはありません。
めでたしめでたし。
芝がハゲるのが怖くてブランチを削除できていない人もこれで安心です。

終わりに

そもそもブランチへのpushはマージしないと芝に反映されない仕様があるのは知っていたのですが、マージされた時点でブランチのコミット履歴がmain側に取り込まれるので、その後でブランチを削除しても大丈夫、という仕組みなんですかね。
とにかく、これで何の心配もなくブランチを消すことができますね。

あとあんまり関係ありませんが、WordPress上でコマンドラインを綺麗に表示する方法がいまいち分かっていません…
コマンドライン用のコードブロックとかありそうだけどなあ。

最後に、今回の検証用に作成したリポジトリを削除しておきます。

芝が元通りになってスッキリ!

タイトルとURLをコピーしました