LoginSignup
2
1

More than 5 years have passed since last update.

Git リモートリポジトリ 特定コミット地点に遡る

Last updated at Posted at 2017-08-04

個人開発でもリモートリポジトリとしてGitHubを使っている方はいらっしゃると思います。

今回は誤ったプッシュをしてしまい、修正のための操作を色々行った結果コミットログもマージもややこしくなってしまった...という事態を想定しています。

できること

  • 特定コミットより後のログの全消去
  • 特定コミットをmasterブランチのHEAD化

※チーム開発の際は大惨事となる可能性があるので、この方法は使用しないでください。
 また、消去は取り消せないため自己責任でお願いします。

なお、操作はローカルリポジトリのmasterブランチ上で、コマンドラインからを想定しています。

手順

1. 戻したいコミット地点のハッシュ値を調べる

git log

ハッシュ値というのはコミットごとに振られるIDのようなものです。
b606ffe5f3ad20ce8b9ea3f7fd25d...のような値が見つかると思います。
logコマンドはデフォルトであればlessコマンドと操作が同じなので、ターミナルから捜査している場合はqで戻れます。

2. HEADを戻したいコミット地点に指定する

git reset --hard 先ほど調べたハッシュ値

ハッシュ値は同一リポジトリ内で重複が無ければ省略が可能です。
おおよそ上7桁くらい入力すれば問題なく省略が使えると思います。
HEADが変更されたことを示すメッセージが出ればOKです。

3.強制プッシュ

git push -f origin ハッシュ値

これで特定コミット地点がmasterのHEADになります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1