今日会社で困ったのでメモ
目的
remoteのコミットをなかったことにしたい
参考にしたのはこちら
基本的に内容は同じ。シチュエーション
- 大幅修正
- commit
- commit
- push
- やっぱ大幅修正前に戻したい
- コミットもなかったことにしたい
シナリオ
- ローカルでreset --hard
- remoteのbranch消す
- ローカルの状態をpush
方法
取りあえずremoteはoriginでbranchはmasterということで。
branchのバックアップを取る
% git push origin master:master_bakローカルのcommitをなかったことにする
% git reset --hard xxxxxxxxxxxxgitのremote branchを削除
% git push origin :masterローカルのmasterをpush
% git push origin master
別解
なんだこれでいけるのか。% git push -f origin xxxxxxxxxxxxx:master
他
ところで% git push origin master:master_bakこれでremoteのbranchのバックアップが取れるとは。(というかremoteのbranchを切れるわけか)
remoteで作ったブランチを手元に持ってくるには
% git checkout -b master_bak origin/master_bakでいいんだな。
それと、
% git push origin :masterのとこで
remote: error: By default, deleting the current branch is denied, because the next remote: error: 'git clone' won't result in any file checked out, causing confusion. remote: error: remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the remote: error: current branch, with or without a warning message. remote: error: remote: error: To squelch this message, you can set it to 'refuse'. remote: error: refusing to delete the current branch: refs/heads/masterみたいなメッセージが出る。その時はremoteのconfigに
[receive] denyDeleteCurrent = falseを追加してやるといいっぽい。
試しにやってみるとこんな感じ。
valvallow@ubuntu ~ % cd temp valvallow@ubuntu ~/temp % mkdir -p playground/{repo,local} valvallow@ubuntu ~/temp/playground/repo % git init --bare Initialized empty Git repository in /home/valvallow/temp/playground/repo/ valvallow@ubuntu ~/temp/playground/repo % cd ../local valvallow@ubuntu ~/temp/playground/local % git init Initialized empty Git repository in /home/valvallow/temp/playground/local/.git/ valvallow@ubuntu ~/temp/playground/local % touch hoge valvallow@ubuntu ~/temp/playground/local % echo 'Hello, world !!' > hoge valvallow@ubuntu ~/temp/playground/local % git add . valvallow@ubuntu ~/temp/playground/local % git commit -m 'initial commit' [master (root-commit) 1876f96] initial commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 hoge valvallow@ubuntu ~/temp/playground/local % echo 'add new row' >> hoge valvallow@ubuntu ~/temp/playground/local % git add . valvallow@ubuntu ~/temp/playground/local % git commit -m 'add new row' [master e532dc4] add new row 1 files changed, 1 insertions(+), 0 deletions(-) valvallow@ubuntu ~/temp/playground/local % echo 'piyo' >> hoge valvallow@ubuntu ~/temp/playground/local % git add . valvallow@ubuntu ~/temp/playground/local % git commit -m 'piyo' [master 5e0355c] piyo 1 files changed, 1 insertions(+), 0 deletions(-) valvallow@ubuntu ~/temp/playground/local % git remote add origin ../repo valvallow@ubuntu ~/temp/playground/local % git push origin master Counting objects: 9, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (9/9), 688 bytes, done. Total 9 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. To ../repo * [new branch] master -> master valvallow@ubuntu ~/temp/playground/local % git branch -a * master remotes/origin/master valvallow@ubuntu ~/temp/playground/local % git push origin master:master_bak Total 0 (delta 0), reused 0 (delta 0) To ../repo * [new branch] master -> master_bak valvallow@ubuntu ~/temp/playground/local % git branch -a * master remotes/origin/master remotes/origin/master_bak valvallow@ubuntu ~/temp/playground/local % git branch * master valvallow@ubuntu ~/temp/playground/local % git checkout -b master_bak origin/master_bak Branch master_bak set up to track remote branch master_bak from origin. Switched to a new branch 'master_bak' valvallow@ubuntu ~/temp/playground/local % git branch master * master_bak valvallow@ubuntu ~/temp/playground/local % cat hoge Hello, world !! add new row piyo valvallow@ubuntu ~/temp/playground/local % git push origin :master To ../repo - [deleted] master valvallow@ubuntu ~/temp/playground/local % git log commit 5e0355cb325a8ed90fe066131c72dead9faba329 Author: valvallow Date: Tue Jun 19 22:23:50 2012 +0900 piyo commit e532dc4dc21f72292e2a700e28ed544d31c21a31 Author: valvallow Date: Tue Jun 19 22:23:17 2012 +0900 add new row commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a Author: valvallow Date: Tue Jun 19 22:22:39 2012 +0900 initial commit valvallow@ubuntu ~/temp/playground/local % git reset --hard e532dc4dc21f72292e2a700e28ed544d31c21a31 HEAD is now at e532dc4 add new row valvallow@ubuntu ~/temp/playground/local % git log commit e532dc4dc21f72292e2a700e28ed544d31c21a31 Author: valvallow Date: Tue Jun 19 22:23:17 2012 +0900 add new row commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a Author: valvallow Date: Tue Jun 19 22:22:39 2012 +0900 initial commit valvallow@ubuntu ~/temp/playground/local % git push origin master Total 0 (delta 0), reused 0 (delta 0) To ../repo * [new branch] master -> master valvallow@ubuntu ~/temp/playground/local % git log commit e532dc4dc21f72292e2a700e28ed544d31c21a31 Author: valvallow Date: Tue Jun 19 22:23:17 2012 +0900 add new row commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a Author: valvallow Date: Tue Jun 19 22:22:39 2012 +0900 initial commit
0 件のコメント:
コメントを投稿