よく忘れるので自分用メモ
git init
.git
リポジトリを作っているだけなので
rm -rf .git
git config
--unset
を使う
git config --global --unset user.name #user.nameが消去される
git add
git init直後の場合
git rm --cached -r . #すべてのファイル
git rm --cached -r example.js #特定のファイル
2回目以降の場合
git reset HEAD #すべてのファイル
git reset HEAD example.js #特定のファイル
参考: git add を取り消す
git commit
コミットを「取り消す」
直前のコミットの場合は、
git reset --soft HEAD^ #ローカルのファイルを残しておく場合
git reset --hard HEAD^ #ローカルのファイルも消す場合
コミットを「打ち消す」
これを使うことでコミットをなかったことにするのでなく、ファイルを戻すことができる。
git revert 1234567890abcdef1234567890abcdef12345678 #コミットのハッシュ値
コミットを「編集」
「コミットメッセージを書き換えたい」等の場合に使用する。
直前のコミットの場合は、
git commit --amend
git push
歴史改変する場合
(こちらはローカルでコミットを打ち消したあとそれをforce-pushして歴史を改変するので、複数人で作業しているリポジトリやforce-pushを禁止しているブランチでは避けたほうが良いです)
git reset --hard HEAD^
git push -f origin HEAD
打ち消す場合
こちらは比較的安全ですが、ログが見にくくなります
git revert HEAD
git push origin HEAD
参考: git push の取り消し方法
git remote
git remote add
で originを指定していれば
git remote rm origin
git clone
ローカルリポジトリを完全に削除すればOK。
cd ../ #そのリポジトリにいた場合
rm -rf リポジトリ名
git log, reflog, diff, show など
これは取り消しというよりやめ方。
q
キーを押せば止まる。Ctrl+CやCtrl+Dでは止まらないため注意
git rebase
git reflog
で開始前の番号を特定し、
git reset --hard HEAD@{番号}
git branch
ブランチの削除
git branch -D ブランチ名
git fetch
ローカルのブランチは更新されてないため
git reset --hard HEAD
git merge
コンフリクトして、まだ手を付けてないとき
git merge --abort
コンフリクトして、手を付けたけどやめるとき
git reset --hard HEAD
マージすべて完了したけど戻すとき(revert)
git revert -m 1 マージコミット
注意点
取り消したマージコミットに含まれていた変更を再度マージすることはできなくなります。
マージすべて完了したけど戻すとき(reset)
git reset --hard ORIG_HEAD
注意点
コミット自体がなかったことになるので、複数人で作業しているリポジトリではやめたほうがいいです
参考: 【git】マージしたけどやっぱりやめたい時のやり方4種類
git pull
成功したけどやめたいとき
git reflog
でpull前の番号を特定し、
git reset --hard HEAD@{番号}