皆さんは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の内容を連動して手戻りさせたい方は気をつけましょう。