git log
命令查看历史记录,从上到下,从现在到从前
$ git log
commit efe6ed2a7a98da8ca4b22d2e5ca0713c335e5546 (HEAD -> main)
Author: zjxht62 <[email protected]>
Date: Tue Apr 20 11:51:31 2021 +0800
feat:readme.txt增加一行
commit d9036113c8c0a31f3958e0a8d1f1ee9a5331a871 (origin/main)
Author: zjxht62 <[email protected]>
Date: Thu Apr 15 18:01:11 2021 +0800
新增文件file1.txt
commit bdbb0646e837d90ecfb0e1d0786fe5824adf3d53
Author: zjxht62 <[email protected]>
Date: Thu Apr 15 17:58:15 2021 +0800
测试-a命令
commit 76c60afba5fcbd0bba50f4dfce58c868ffe79270
:...skipping...
commit efe6ed2a7a98da8ca4b22d2e5ca0713c335e5546 (HEAD -> main)
Author: zjxht62 <[email protected]>
Date: Tue Apr 20 11:51:31 2021 +0800
feat:readme.txt增加一行
commit d9036113c8c0a31f3958e0a8d1f1ee9a5331a871 (origin/main)
Author: zjxht62 <[email protected]>
Date: Thu Apr 15 18:01:11 2021 +0800
新增文件file1.txt
commit bdbb0646e837d90ecfb0e1d0786fe5824adf3d53
Author: zjxht62 <[email protected]>
Date: Thu Apr 15 17:58:15 2021 +0800
测试-a命令
commit 76c60afba5fcbd0bba50f4dfce58c868ffe79270
Author: zjxht62 <[email protected]>
Date: Thu Apr 15 17:47:25 2021 +0800
添加了一个readme文件
git log --pretty=oneline
$ git log --pretty=oneline
efe6ed2a7a98da8ca4b22d2e5ca0713c335e5546 (HEAD -> main) feat:readme.txt增加一行
d9036113c8c0a31f3958e0a8d1f1ee9a5331a871 (origin/main) 新增文件file1.txt
bdbb0646e837d90ecfb0e1d0786fe5824adf3d53 测试-a命令
76c60afba5fcbd0bba50f4dfce58c868ffe79270 添加了一个readme文件
1.reset:回退操作
在git中,HEAD
代表当前版本,上一个版本就是HEAD^
,同理上上个版本就是HEAD^^
,上100个版本可以写成HEAD~100
回退到上一个版本,而且之后的提交都不要了
$ git reset --hard HEAD^
HEAD is now at d903611 新增文件file1.txt
也可以通过commit id来跳转到之前或之后的某一次提交
$ git reset --hard efe6ed2a7a98da8ca4b22d2e5ca0713c335e5546
HEAD is now at efe6ed2 feat:readme.txt增加一行
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL:
┌────┐
│HEAD│
└────┘
│
└──> ○ append GPL
│
○ add distributed
│
○ wrote a readme file
改为指向add distributed:
┌────┐
│HEAD│
└────┘
│
│ ○ append GPL
│ │
└──> ○ add distributed
│
○ wrote a readme file
然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。
**慎用:**强行同步远端git push --force
查看每次执行的命令
git reflog
$ git reflog
efe6ed2 (HEAD -> main) HEAD@{
0}: reset: moving to efe6ed2a7a98da8ca4b22d2e5ca0713c335e5546
d903611 (origin/main) HEAD@{
1}: reset: moving to HEAD^
efe6ed2 (HEAD -> main) HEAD@{
2}: commit: feat:readme.txt增加一行
d903611 (origin/main) HEAD@{
3}: Branch: renamed refs/heads/master to refs/heads/main
d903611 (origin/main) HEAD@{
5}: commit: 新增文件file1.txt
bdbb064 HEAD@{
6}: commit: 测试-a命令
76c60af HEAD@{
7}: commit (initial): 添加了一个readme文件
2.revert:反做
revert实现的是撤销之前某一commit,但是同时保留之后的commit,记录下整个版本变动流程,就可以使用revert
比如:我要撤销‘增加一行中文’,但是要保留‘feat:增加第二行,要保留此次commit’
$ git log
commit a1afbedab893e66b1f2f0db01199360f822e3ad2 (HEAD -> main)
Author: zjxht62 <[email protected]>
Date: Tue Apr 20 15:15:53 2021 +0800
feat:增加第二行,要保留此次commit
commit 29a4c0bb3a0b1eb19b0a570a84501402656c2706
Author: zjxht62 <[email protected]>
Date: Tue Apr 20 15:14:28 2021 +0800
feat:增加一行中文
也就是文件中
扫描二维码关注公众号,回复:
13163515 查看本文章

Git is a version control system.
Git is a free software.
Git is Diao.
Git is Niu.
Git is Haha.
新增一条 //这一行被撤销
增加第二行 //这一行保留
- 先用
git log
命令找出要revert的版本的commit id,是:29a4c0bb3a0b1eb19b0a570a84501402656c2706
- 执行
git revert -n 29a4c0bb3a0b1eb19b0a570a84501402656c2706
$ git revert -n 29a4c0bb3a0b1eb19b0a570a84501402656c2706
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
error: could not revert 29a4c0b... feat:增加一行中文
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
- 此时可能出现冲突,需要手动解决
Git is a version control system.
Git is a free software.
Git is Diao.
Git is Niu.
<<<<<<< HEAD
Git is Haha.
新增一条
增加第二行
=======
Git is Haha.
>>>>>>> parent of 29a4c0b (feat:增加一行中文)
解决好后通过git add
命令暂存修改,之后提交代码
Administrator@DESKTOP-RMO2H0L MINGW64 /e/zjx/learngit (main|REVERTING)
$ git add readme.txt
Administrator@DESKTOP-RMO2H0L MINGW64 /e/zjx/learngit (main|REVERTING)
$ git commit -m 'revert 添加一行'
[main 048bd79] revert 添加一行
1 file changed, 1 insertion(+), 2 deletions(-)
可以发现revert后生成一个新的版本