今天有幾個文件改在了其他分支上。需要回滾。
參考了下面兩篇文章:
簡單講,分多個不同的階段:
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 3361e4ec3dc9d7b4fb2faf6bdcdcc6975bb88d0e Merge: 442087b a36e7e5 Author: xxx Date: Wed Dec 14 15:20:06 2016 +0800 Merge branch 'onetime_refund_update' into master commit a36e7e5cc51b3c5405a486afd35df26a01dd9dd4 Author: xxx Date: Wed Dec 14 14:56:20 2016 +0800 Update OnetimeRefund.php for new Refund interface Change-Id: Ide737112a7c5ceb9077aa34406b453ed2ea2a109 commit 442087bed0c62f3e5f738b906f7764143cf49fee Merge: 379ce39 c6664bd ......