github_guide


Project maintained by futchiis Hosted on GitHub Pages — Theme by mattgraham

ローカルリポジトリでの操作を取り消す

ワークツリーの変更取り消す

ワークツリーの変更を取り消すにはgit checkoutコマンドを使います。

一部のファイルだけ戻す場合

git checkout -- <file>

以下のように指定したディレクトリ以下を再帰的に戻すことも可能です。 git checkout -- <directly>

使ってみる

README.mdを変更してから最後のコミットに戻します。

echo "## 変更部分" >> README.md
git checkout -- README.md

echoでREADME.mdに書き出されてgit checkoutで元に戻ったことが確認できたと思います。

ステージングを取り消す

ステージングを取り消すにはgit resetコマンドを使います。

一部のファイルだけステージングを取り消す場合

git reset <file>

全てのステージングを取り消す場合

git reset

ファイルを指定しなければ全てのステージングを取り消す事ができます。

使ってみる

ひとまず、コミットしないファイルを作成し、ステージングします。

~/git_learning/ $ echo > remove.md
~/git_learning/ $ git add remove.md

git statusコマンドでステージングできた事を確認したらgit resetコマンドを用いて取り消します。
git reset remove.md
コマンド実行後、取り消せた事をgit statusで確認してください。

以降必要ないのでrm remove.mdremove.mdは削除しましょう。

コミットを取り消す

直前のコミットだけを取り消す

コミットのみを取り消しステージングエリアやワークツリーは、一切変更したくない場合に用いります。
git reset --soft HEAD^

HEADって何?

大抵は最後のコミットを表しHEAD^で2つ前のコミットを表します。
同じようにHEAD^^^で4つ前のコミットを表しますがHEAD~3のように表記することもできます。
HEADのかわりにコミットハッシュを用いても同じです。

コミットとステージングを取り消す

コミットとステージングを取り消しますが、ワークツリーは変更されません。 git reset --mixed HEAD^

コミット,ステージング,ワークツリーを取り消す

ワークツリーも元に戻します。
git reset --hard HEAD^

ちなみにgit reset --hard HEADでステージングや作業ツリー全体の変更を最後のコミットまで戻すことができます。

直前のコミットのコミットメッセージを変更する

git commit --amendを使うことで変更できます。
コミットハッシュが変わるのでpush後は使用厳禁です。