宝哥软件园

git版本回滚_电源节点Java学院整理

编辑:宝哥软件园 来源:互联网 时间:2021-09-04

按如下方式修改readme.txt文件:

Gitis是一个分布式版本控制系统。Gitis是在GPL下发布的自由软件。然后尝试提交:

$ git addreadme . txt $ git commit-m ' append GPL '[master 3628164]append GPL 1文件已更改,1插入(),1删除(-)像这样,您不断修改文件,然后将修改提交到版本库。就像玩RPG游戏一样,每过一关,游戏状态就会自动保存。如果某一级没有通过,也可以选择读取上一级的状态。有时候,在玩Boss之前,你会手动保存文件,这样如果你玩Boss失败了,你可以从最近的地方重新开始。Git也一样。每当觉得文件被修改到一定程度,就可以“保存一个快照”,在Git中称为commit。一旦你把文件弄乱或误删了,你可以从最近的提交中恢复过来,继续工作,而不是失去几个月的所有成果。

现在,让我们回顾一下readme.txt文件已经提交到Git存储库中的版本有多少:

版本1:

写了一个自述文件gitis一个版本控制系统。gitis自由软件。版本2:

添加分布式gitis分布式版本控制系统。gitis自由软件。版本3:

Append GPL gitis是一个分布式版本控制系统。gitis在GPL下发布的自由软件。当然,在实际工作中,我们如何才能记住一个几千行的文件每次都发生了什么变化,否则,版本控制系统该怎么办呢?版本控制系统中一定有一个命令可以告诉我们历史。在git中,我们使用Git日志命令来查看:

$ git log commit 3628164 FB 26d 48395383 F8 f 31179 f 24 e 0882 E1 E0 author : Michael lio[email protected]date : 8月20日星期二153:11:49 2013 0800追加GPLcommit ea 34578d 5496d 7 DD 233 c 827 ed 32 A8 CD 576 c 5e 85author 336366如果输出信息太多太刺眼,可以尝试添加-挺=oneline参数:

$ git log-Pitty=one line 3628164 FB 26d 48395383 F8 f 31179 f 24 e 0882 E1 e 0追加gplea 34578d 5496 D7 DD 233 c 827 ed 32 A8 CD 576 C5 ee 85 add distributed CB 926 E7 ea 50 ad 11 b8 f 9e 909 c 05226233 BF 755030 write A README FILE需要友好的提醒。您看到的是一系列类似于3628164的提交id(版本号).882e1e0。与SVN不同,Git的提交标识不是1、2、3的递增数.但是SHA1计算出了一个非常大的数字。为什么commit id需要用这么大的数字来表示?因为Git是一个分布式版本控制系统,后面我们会研究很多人在同一个版本数据库中工作。如果大家都用1、2、3 …作为版本号,肯定会冲突。

每次提交新版本时,Git都会自动将它们串成一个时间线。如果使用可视化工具查看Git历史,可以更清楚地看到提交历史的时间线:

好了,现在我们启动时光机,准备将readme.txt回滚到之前的版本,也就是“add distributed”的版本。怎么做?

首先,Git必须知道当前版本是哪个版本。在Git中,HEAD用来表示当前版本,即最新提交的3628164.882e1e0(注意我的提交ID和你的肯定不一样)。以前的版本是head,以前的版本是head。当然在之前的100个版本中更容易数到100,所以写成head ~。

现在,我们希望将当前版本的“追加GPL”回滚到以前版本的“添加分布式”,因此我们可以使用git reset命令:

$ git reset-hard head现在在ea 34578 add distributed-hard参数的含义是什么?我们以后再谈这个。现在你可以放心使用了。查看readme.txt的内容是否为版本添加分发:

$ catreadme.txt gitis分布式版本控制系统。gitis自由软件。果然。

您还可以继续回到以前的版本写一个自述文件,但是速度很慢,但是让我们使用git日志再次查看当前版本库的状态:

$ git log commit ea 34578d 5496d 7 DD 233 c 827 ed 32 A8 CD 576 C5 ee 85 author : Michael lio[email protected]Date : Tue 8月20日14:53:12 2013 0800 add distributed commit CB 926 E7 ea 50 ad 11 b8 F9 e 909 c 05262333 BF 75035030 author :比如你从21世纪乘坐时光穿梭来到19世纪。如果你想回去,就不能回去。你该怎么办?

其实有一些办法。只要上面的命令行窗口没有关闭,您就可以查找并发现append GPL的提交id是3628164.因此您可以指定未来的版本:

$ Git reset-hard 3628164 head现在是3628164 append GPL版本号不需要完全写,但是前几个就可以了,Git会自动查找。当然,你不能只写前一两个,因为Git可能会找到多个版本号,所以你不能确定是哪一个。

请仔细阅读readme.txt的内容:

$ catreadme.txt gitis分布式版本控制系统。gitis在GPL下发布的自由软件。果然,我回到了胡汉三。

Git的版本非常快,因为Git内部有一个HEAD指针指向当前版本。当您回滚版本时,Git只将HEAD指向附加GPL的点:

指向添加分布式替代:

然后顺便更新了工作区的文件。所以如果你让HEAD指向哪个版本号,你就会找到当前版本。

现在,你回到某个版本,关掉电脑,第二天早上就后悔了。如果你想恢复到新版本呢?如果找不到新版本的提交id怎么办?

在Git里,总有后悔药吃。当您使用$ git reset - hard HEAD^回滚添加分布式版本时,如果您想要恢复到append GPL,您必须找到append GPL的提交id。Git提供了一个命令git reflog来记录您的每个命令:

$ git reflogea 34578[email protected]{ 0 } : reset :移动到head^3628164[email protected]{ 1 } : commit : append gplea 34578[email protected]{ 2 } : commit : add distributed CB 926 E7[email protected]{ 3 } 3: commit(初始):写一个自述文件终于松了一口气。第二行显示append GPL的提交id是3628164。现在,你可以通过时光机回到未来。

总结

现在总结一下:

HEAD指向的版本是当前版本,因此Git允许我们在版本历史之间穿梭,并使用命令git reset - hard commit_id。在穿梭之前,可以使用git日志查看提交历史,从而决定回滚到哪个版本。要返回到未来,使用git reflog查看命令历史,从而确定未来要返回到哪个版本。

更多资讯
游戏推荐
更多+