工作中難免會遇到一些commit需要回退舵抹,可以用reset和revert。
reset是回朔到指定的commit版本竭讳,指定的commit版本之后的操作commit都重置了支子。revert是刪除指定的commit操作的內(nèi)容,指定的commit之前和之后commit操作都不受影響迎献,與此同時這個操作也會作為一個commit進行提交瞎访。
但對于已經(jīng)提交到遠端的公共分支比如master上的commit只能用revert來進行回退操作,具體用法如下所示:
這是當前工作區(qū)域log的情況
bash-3.2$ git log
commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:18 2017 +0800
add e.go
commit 6a307a975fa676954c61078a3d786ef4ba084fd1
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:02 2017 +0800
add d.go
commit 0bf71363290e8db926d442234eefb4cee2b3fdc8
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:41 2017 +0800
add c.go
commit 6a2cc3dd8385004a5b9145630cb0b67498155c6b
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:23 2017 +0800
add b.go
commit d672cd988198d3aec6faaccf0e39ab38e2304d19
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
commit 2405994636350db65ec02adcbb3a6f356140b075
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:13 2017 +0800
Create README.md
commit a432247e2acad106b7386d610df21ee1afbeaac6
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:03 2017 +0800
Initial commit
1.比如你當前想回退某個commit
比如如下commit
commit d672cd988198d3aec6faaccf0e39ab38e2304d19
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
方式一:bash-3.2$ git revert HEAD~4
用法: 當前commit為HEAD吁恍,然后每一個commit加一得到要撤銷的commit 為HEAD~4
commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2 HEAD
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:18 2017 +0800
add e.go
commit 6a307a975fa676954c61078a3d786ef4ba084fd1 HEAD~1
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:02 2017 +0800
add d.go
commit 0bf71363290e8db926d442234eefb4cee2b3fdc8 HEAD~2
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:41 2017 +0800
add c.go
commit 6a2cc3dd8385004a5b9145630cb0b67498155c6b HEAD~3
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:23 2017 +0800
add b.go
commit d672cd988198d3aec6faaccf0e39ab38e2304d19 HEAD~4
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
方式二:bash-3.2$ git revert d672cd988198d3aec6faaccf0e39ab38e2304d19
或者 git revert d672cd9
用法: git revert + 完整的commit或者該commit前7位即可
bash-3.2$ git log
commit 3c149a450e2b86218a588423e116ee678acc2514
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 15:04:37 2017 +0800
Revert "add a.go"
This reverts commit d672cd988198d3aec6faaccf0e39ab38e2304d19.
commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:18 2017 +0800
add e.go
commit 6a307a975fa676954c61078a3d786ef4ba084fd1
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:02 2017 +0800
add d.go
commit 0bf71363290e8db926d442234eefb4cee2b3fdc8
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:41 2017 +0800
add c.go
commit 6a2cc3dd8385004a5b9145630cb0b67498155c6b
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:23 2017 +0800
add b.go
commit d672cd988198d3aec6faaccf0e39ab38e2304d19
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
2.回退連續(xù)的幾個commit扒秸,這種情況比較常見
比如回退最新的三個commit:HEAD,HEAD~1,HEAD~2
commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2 HEAD
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:18 2017 +0800
add e.go
commit 6a307a975fa676954c61078a3d786ef4ba084fd1 HEAD~1
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:02 2017 +0800
add d.go
commit 0bf71363290e8db926d442234eefb4cee2b3fdc8 HEAD~2
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:41 2017 +0800
add c.go
commit 6a2cc3dd8385004a5b9145630cb0b67498155c6b HEAD~3
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:23 2017 +0800
add b.go
commit d672cd988198d3aec6faaccf0e39ab38e2304d19 HEAD~4
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
commit 2405994636350db65ec02adcbb3a6f356140b075 HEAD~5
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:13 2017 +0800
Create README.md
commit a432247e2acad106b7386d610df21ee1afbeaac6 HEAD~6
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:03 2017 +0800
Initial commit
比如最新的三個commit有問題需要回退 git revert X...Y
用法: X...Y 代表一個左開右閉區(qū)間(X,Y],不包括X,包括Y. 其中Y為起點commit,X為終點commit的下一個commit
方式一:
bash-3.2$:git revert HEAD~3...HEAD
方式二:
git revert 6a2cc3d...6a43ed0
或者
git revert 6a2cc3dd8385004a5b9145630cb0b67498155c6b...6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2
結(jié)果如下:
bash-3.2$ git log
commit af4076c5fe336d877ec36d1580c8b153400981c4
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 15:45:43 2017 +0800
Revert "add c.go"
This reverts commit 0bf71363290e8db926d442234eefb4cee2b3fdc8.
commit 9cee5e52f1b4e5a2c3fe8e697c5dda6a844fe923
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 15:45:40 2017 +0800
Revert "add d.go"
This reverts commit 6a307a975fa676954c61078a3d786ef4ba084fd1.
commit a75fce274472132cf59f24a7bfb11a8c47295987
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 15:45:38 2017 +0800
Revert "add e.go"
This reverts commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2.
commit 6a43ed02f5831c9b91df9ae0dbfb9561d1ec2bb2
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:18 2017 +0800
add e.go
commit 6a307a975fa676954c61078a3d786ef4ba084fd1
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:55:02 2017 +0800
add d.go
commit 0bf71363290e8db926d442234eefb4cee2b3fdc8
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:41 2017 +0800
add c.go
commit 6a2cc3dd8385004a5b9145630cb0b67498155c6b
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:54:23 2017 +0800
add b.go
commit d672cd988198d3aec6faaccf0e39ab38e2304d19
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:53:00 2017 +0800
add a.go
commit 2405994636350db65ec02adcbb3a6f356140b075
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:13 2017 +0800
Create README.md
commit a432247e2acad106b7386d610df21ee1afbeaac6
Author: asturelizhe <asturelizhe@163.com>
Date: Sun Apr 23 14:51:03 2017 +0800
Initial commit