🔧

うっかりソースコードをGitHubに公開しないようにする

1 min read

皆さんはついうっかり公開してはいけないソースコードをGitHubに公開したことはあるだろうか?

例えば低い給与に不満があり一発かましてやりたかったときや残業続きで全部ぶっ壊れないかなと思ったときに,うっかりアップロードしてしまう.もしくはGitHubが年収を占うサイトだと思って血液型や誕生日を入力するノリでソースコードをアップロードしてしまう.そんなことはないだろうか?[1]

そんなうっかりさんが世の中にいるとは思わないが,もしかしたらいるかもしれないのでpushInsteadOfを紹介したい.

https://git-scm.com/docs/git-config#Documentation/git-config.txt-urlltbasegtpushInsteadOf

pushInsteadOfgit pushするときのpush先を書き換える.例えばGitHubはリポジトリにsshでもhttpsでも利用できるので,pullはhttps,pushはsshというように使い分けたいことがあるだろう.そんなときには~/.gitconfigにこんな風に書いておこう.

[url "git@github.com:"]
	pushInsteadOf = "https://github.com/"

こうするとpush先がhttps://github.com/から始まるときに,その部分をgit@github.com:で置き換えてくれる.

仮にpsuh先がhttps://github.com/github/docs.gitだったとしよう.そうするとこのURLはhttps://github.com/から始まるので,この部分がgit@github.com:に置き換えられる.置き換え後のURLはgit@github.com:github/docs.gitだ.これはGitHubのsshのURLと同じなので,sshでGitHubにpushされることになる.

この機能は誤push防止にも使える.例えばこんな風に設定してみよう.

[url "http://localhost/"]
	pushInsteadOf = "git@github.com:"
	pushInsteadOf = "https://github.com/"

pushInsteadOfは複数書いてもいい.こうするとpush先がgit@github.com:https://github.com/で始まる場合にhttp://localhost/に置き換えてくれる.github.comにログインして作業しているわけでなければGitHubにはpushされなくなる.localhostでは心配なら/dev/null/でもいい.

これで低賃金や過重労働を嘆いたり「GitHub?知らないサイトだな」と思いながらgit pushしても安心だ.

脚注
  1. ない. ↩︎