1. TOPTOP
  2. インフラ
  3. GitHub

GitとGitHubのコミットを連動して元に戻す方法 ~ GitHubに公開したくない情報をpushしたときの対処方法

git_push_f_origin_master

皆さんはGitやGitHubでタスク管理をしていると、ときどき「やらかした!」って思うことがありませんか?自分はあります。まさしく今やらかしました。

秘密の文字列をGitHubにpushしてしまった!

何をやらかしたかというと、秘密にしなければならないaccess_TokenやIDなどをGitHubで公開してしまったことです。

$ git add -A ← ステージングエリアに上げる
$ git commit -m"hoge" ← ローカルリポジトリに登録
$ git push origin master ← リモートリポジトリ(GitHub)に登録

本来であればステージングエリアに上げる前に気づくべきですが、そのままスルーしてローカルリポジトリからリモートリポジトリ(GitHub)まで一気に公開してしまいました。

GitとGitHubのコミットを連動させて手戻りする方法

リモートリポジトリごと消すという粗っぽい方法もありますが、一番スマートな修正方法は、”git reset –hard“と”git push -f“を使う方法でしょう。

“git reset”と”git push”を使う

$ git log
$ git reset --hard fasd341
$ git push -f origin master

まず”git log”で戻りたいコミットの番号を調べましょう。その7桁のコミット番号をメモ帳にでもコピペしておきます。次にローカルリポジトリで”git reset –hard”を使って戻りたいコミットまで戻ります。

最後に”git push -f”でGitHubのコミットも連動して手戻りします。(このときローカルとリモートのコミット番号の先頭番号を必ず同じにしておきましょう)。

“git push -f”とは

ここで気になるのが、”-f”オプションですね。ここで使われる”f”とは”force”で「強制的」にという意味のようです。ひとりでGitを操作しているうちは気にならないそうですが(いわゆる「ぼっちGit」)、複数人で作業管理をしているときは使うと何かと厄介そうです。

複数人との作業中において、GitとGitHubの内容を連動して手戻りさせたい方は気をつけましょう。