
Gitでは、ファイルをコミットしたあとに「間違えてコミットしてしまった」と気づくことがあります。
そんなときは、TortoiseGitを使ってコミットを取り消すことができます。
本記事では、TortoiseGitでコミットを取り消し、ファイルを修正してから、もう一度GitHubへプッシュするまでの手順を説明します。
目次
コミットを取り消す前の確認
今回は「TortoiseGitからGitHubへファイルを登録する方法」で使用した「TestClone」を使って、コミットを取り消す手順を説明します。
ローカルにある「TestClone」には以下の3つのファイルがあります。
GitHubは、ローカルにある「TestClone」をプッシュして登録した状態です。
TortoiseGitでコミットを取り消す
- 「TestClone」フォルダ内の何もないところで右クリックして、[TortoiseGit] → [ログを表示] を選択します。

- 取り消したいコミットを選択します。ここでは「ファイル名を修正しました」を選択します。

- 右クリックして、「”master” をここへリセット」を選択します。


- 「リセット」画面の「リセットの種類」は「Mixed」を選択して、[OK] ボタンをクリックします。

リセットの種類
Soft:コミットだけやり直したい。
Mixed:コミットを取り消して、変更内容を修正したい。
Hard:コミットも変更内容も完全に取り消したい。 - リセット結果が表示されますので、[閉じる] ボタンをクリックします。

- sample.bat のアイコンが「変更あり(赤)」に変わりました。また、test.csv がGitの対象から外れました。

「”master” をここへリセット」を選択すると、masterの位置を選択したコミットまで戻すことができます。
今回は「Mixed」を選択しているため、コミットは取り消されますが、コミットしたファイルの変更内容は残ります。 - 「”master” をここへリセット」を実行した後のログメッセージです。

修正してもう一度コミットする
- sample.bat を右クリックして [TortoiseGit] → [名前を変更] を選択して名前を変更します。ここでは「test.bat」に名前を変更します。

- test.txt はファイルの中身を変更します。

- フォルダ内で右クリックして [Git コミット] を選択します。
- コミットのメッセージを入力して、[コミット] ボタンをクリックします。

- コミット結果が表示されますので、 [閉じる] ボタンをクリックします。
- コミットしたファイルのアイコンが「コミット済み(緑)」に変わりました。

- コミット後のログメッセージです。

GitHubへプッシュする
- 「TestClone」フォルダを右クリックして [TortoiseGit] → [プッシュ] を選択します。
- 宛先のリモートがGitHubに設定した「origin」になっていることを確認して、[OK] ボタンをクリックします。

- プッシュが異常終了しました。

「Note about fast-forwards」というエラーになり、プッシュできませんでした。
ローカルとGitHubの履歴が一致していないため、GitHub側の変更を取り込むためにプルを行いました。
しかし、ローカルにはGit管理外の test.csv が存在していたため、プルするとGitHub側の test.csv で上書きされる可能性があり、プルも拒否されました。 - エラーが発生したので、ローカルの test.csv を削除します。
- 「TestClone」フォルダを右クリックして [TortoiseGit] → [プル] を選択します。
- 「プル」画面が表示されますので、[OK] ボタンをクリックします。

- プル結果が表示されますので、[閉じる] ボタンをクリックします。

- GitHubにある test.csv がローカルに反映されました。

- もう一度、「TestClone」フォルダを右クリックして [TortoiseGit] → [プッシュ] を選択して、プッシュを実行します。
- 今度はプッシュが正常に実行できました。

GitHubのリポジトリを確認する
- ブラウザで、GitHubのリポジトリを開きます。
- リポジトリの画面に、先ほどTortoiseGitからプッシュしたファイルが反映されました。

まとめ
今回は、TortoiseGitを使って、ローカルのファイルをGitHubへ登録する方法を紹介しました。
今回の操作では、sample.bat を test.bat にリネームし、test.txt を修正してコミットしたあと、GitHubへプッシュしました。
プッシュ時には「Note about fast-forwards」というエラーが発生しましたが、ローカルの test.csv を削除してからプルすることで、GitHubにある test.csv をローカルへ反映できました。
最後にもう一度プッシュすることで、ローカルで行った変更をGitHubへ反映できました。
以上、TortoiseGitでコミットを取り消し、ファイルを修正してから、もう一度GitHubへプッシュするまでの手順を解説しました。