今天有几个文件改在了其他分支上。需要回滚。
参考了下面两篇文章:
简单讲,分多个不同的阶段:
1. 用git status命令看,发现是unstaged,那么就是只在working tree里面。
这时候,git checkout <文件名>,就可以了。
当然,我试了几次没成功,看起来是需要对branch指定清楚版本才行,未解。
后来是进行了下面的 git reset . 之后,继续使用
git reset 5c5feea2d8854b3b7d7be3c03764d154429b872a OnetimeRefund.php
才可以的。
2. 已经git add到stage里面的文件,需要先使用如下命令:
git reset .
然后已经staged的文件会恢复为未stage。
3. 本地repository的回滚:
git reset --hard HEAD~3 (回滚3个版本,但是如果已经提交到远程,那么push会报错)
4. 远程repository的回滚:
git revert 51fa57da7c5352ddb(后面这个是git log里面能够查到的)
另外,关于git merge 是否加 --no-ff 的选项,通过git log 加上图形选项,这个就有直观的理解了:
以下是不加--no-ff的git log图形化内容(icode的merge也是默认不加--no-ff的):
git log --graph --pretty=oneline --abbrev-commit
* 3361e4e Merge branch 'onetime_refund_update' into master|\ | * a36e7e5 Update OnetimeRefund.php for new Refund interface| * 81149df Merge branch 'trade' into develop| |\ * | \ 442087b Merge branch 'random_code_new' into master|\ \ \ | * | | c6664bd modify expire time from 7 to 35 days| * | | d52c212 modify expire time from 7 to 34 days| * | | 3399d42 Merge remote-tracking branch 'remotes/origin/master' into random_code_new| |\ \ \ | |/ / / |/| | |
而普通的git log大概看不出来:
commit 3361e4ec3dc9d7b4fb2faf6bdcdcc6975bb88d0eMerge: 442087b a36e7e5Author: xxxDate: Wed Dec 14 15:20:06 2016 +0800 Merge branch 'onetime_refund_update' into mastercommit a36e7e5cc51b3c5405a486afd35df26a01dd9dd4Author: xxxDate: Wed Dec 14 14:56:20 2016 +0800 Update OnetimeRefund.php for new Refund interface Change-Id: Ide737112a7c5ceb9077aa34406b453ed2ea2a109commit 442087bed0c62f3e5f738b906f7764143cf49feeMerge: 379ce39 c6664bd......