simker

Life is too short, just make it.


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 音乐

  • 搜索

git工作区回滚

发表于 2019-12-04 更新于 2021-01-13 分类于 git 阅读次数: Disqus:
本文字数: 3.1k 阅读时长 ≈ 3 分钟

使用 git 团队协作管理项目的时候,难免会有错误的提交,按照正常的流程应该是在后续的提交纠正这些错误,但是如果这些错误本就不必要的话,是可以用回滚来操作的,于此记录下 git 下回滚的姿势。

如果说,本次提交仅限本地的话,我们可以用 git reset --hard [your reset version] 来回退本地的版本,从而实现取消错误代码。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ laravel git:(master) git ll
commit ee3105a (HEAD -> master)
Author: caixian <qq52577517@163.com>
Date: Wed Dec 4 09:34:17 2019 +0800

some stupid do this

app/Http/Controllers/User.php | 1 +
1 file changed, 1 insertion(+)

commit c92f163 (origin/master)
Author: caixian <qq52577517@163.com>
Date: Sat Nov 9 14:55:46 2019 +0800

clear cors
:q
$ laravel git:(master) git reset --hard c92f163
HEAD is now at c92f163 clear cors

如上,由于我们还未推送至远程,所以我们接下来的 commit, push 等一系列的行为都是正常的。

如果说,某人不慎把错误代码提交且推送到看远程的话,这个时候就小心了,正常情况下,尽量走正常路线解决错误代码 (既在当前版本下找到错误代码且更正然后提交到远程) ,正式环境下的代码可以用 git reset --hard [version] 暂时回退到正常版本。如果涉及到的代码量不大的话,我们可以用到 git revert [version] 来撤销更改。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
$ laravel git:(master) git ll
commit 9a258dc (HEAD -> master, origin/master)
Author: caixian <qq52577517@163.com>
Date: Wed Dec 4 09:46:29 2019 +0800

some stupid do this

app/Http/Controllers/User.php | 1 +
1 file changed, 1 insertion(+)

commit c92f163
Author: caixian <qq52577517@163.com>
Date: Sat Nov 9 14:55:46 2019 +0800

clear cors
:q

$ laravel git:(master) git revert 9a258dc
Revert "clear cors"

This reverts commit 9a258dc95d0c8c5b75c9e33c1513479be2f07e53.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Changes to be committed:
# modified: app/Http/Controllers/User.php
#
~
~
~
:wq

[master fda0be6] Revert "some stupid do this"
1 file changed, 7 insertions(+), 6 deletions(-)

$ laravel git:(master) git push origin master
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 437 bytes | 437.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
remote:
remote: GitHub found 2 vulnerabilities on ElegantLive/learn-laravel's default branch (2 moderate). To find out more, visit:
remote: https://github.com/ElegantLive/learn-laravel/network/alerts
remote:
To github.com:ElegantLive/learn-laravel.git
9a258dc..fda0be6 master -> master
$ laravel git:(master) git ll
commit fda0be6 (HEAD -> master, origin/master)
Author: caixian <qq52577517@163.com>
Date: Wed Dec 4 09:49:54 2019 +0800

Revert "some stupid do this"

This reverts commit dbdc6db09ffa9bd5af461fc91f04261566bb017c.

app/Http/Controllers/User.php | 1 -
1 file changed, 1 deletion(-)

commit 9a258dc
Author: caixian <qq52577517@163.com>
Date: Wed Dec 4 09:46:29 2019 +0800

some stupid do this

app/Http/Controllers/User.php | 1 +
1 file changed, 1 insertion(+)

commit c92f163
Author: caixian <qq52577517@163.com>
Date: Sat Nov 9 14:55:46 2019 +0800

clear cors
:q

由上可以看到,我们成功撤销了some stupid do this 的更改,且成功推送到了远程,这样我们就可以基于上个版本(clear cors)继续开发。

注意: git revert [version] 是撤销某个提交的更改,不是回退到某个版本

当然,如果说,有多个错误提交形成一错再错的连环作用的话,建议基于稳定版本重新开一个分支

1
2
3
git checkout -b [new branch name] // 切换至新分支
git reset --hard [version] // 回退至稳定版本
git push -f origin [new branch name] // 强制推送到远程(当然你也可以基于当前分支回退稳定版本,然后强行推送至远程)

祝你好运

enjoy and happy coding!

Cai xian 微信支付

微信支付

Cai xian 支付宝

支付宝

# git
git取消对文件的更新
JavaScript handle Event
Cai xian

Cai xian

A super nice guy!
24 日志
12 分类
15 标签
© 2019 – 2021 Cai xian | 70k | 1:04
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|