gitでうっかりファイルを上書きしてコミット、昔の変更が飛んでしまった..ときの修正ファイルの戻し方
git logとかtigとかgithubとかbitbucketとかお使いのもので、ハッシュを調べます
$ git log /path/to/file
とかで 791d6ce を調べて
$ glt checkout 791d6ce /path/to/file
これでstagingに戻ります
(git add された状態)
ひびのきろく
gitでうっかりファイルを上書きしてコミット、昔の変更が飛んでしまった..ときの修正ファイルの戻し方
git logとかtigとかgithubとかbitbucketとかお使いのもので、ハッシュを調べます
$ git log /path/to/file
とかで 791d6ce を調べて
$ glt checkout 791d6ce /path/to/file
これでstagingに戻ります
(git add された状態)
gitで管理してるディレクトリに大量にファイルをしてしまった..
$ git status
On branch v.2.13.3
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: data/Smarty/templates/default/abouts/index.tpl
modified: data/Smarty/templates/default/cart/index.tpl
modified: data/Smarty/templates/default/contact/complete.tpl
modified: data/Smarty/templates/default/contact/confirm.tpl
modified: data/Smarty/templates/default/contact/index.tpl
modified: data/Smarty/templates/default/entry/complete.tpl
modified: data/Smarty/templates/default/entry/confirm.tpl
modified: data/Smarty/templates/default/entry/index.tpl
modified: data/Smarty/templates/default/entry/kiyaku.tpl
modified: data/Smarty/templates/default/error.tpl
modified: data/Smarty/templates/default/footer.tpl
# 延々に続く..
となったときに全て無かったことにするには
$ git clean -f
これで元通り
あ、すべて消えるのでご使用はお気をつけてください
gitでファイル管理して作業中、急な依頼が..だいぶきりが悪い..
そんなときにはgit stash
$ vim sample.txt
とかでがーーーと作業中、急な依頼
$ git stash save
Saved working directory and index state WIP on master: 6ea09e4 add sample3
HEAD is now at 6ea09e4 add sample3
などと、変更したファイルがなかったことになって、最後のコミットへ戻ります
急な依頼を対応して..
もとに戻すには
$ git stash list
stash@{0}: WIP on master: 6ea09e4 add sample3
stashした数だけ保存されてます
最新を元に戻すなら
$ git stash pop
戻したいものを指定するなら
$ git stash stash@{0}
とすればいいです
stashたまに便利です
普通にgit cloneするとmasterしか取り込まれません
まず、-a をつけてブランチ一覧を表示する
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/production
git checkout -bのあとにローカルのブランチ名、リモートのブランチ名をつけてcheckout
$ git checkout -b production origin/production
pull して取り込み
$ git pull
statusで確認
$ git status
On branch production
Your branch is up-to-date with 'origin/production'.
nothing to commit, working directory clean
branchでも確認
$ git branch -a
master
* production
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/production
できました