首页 > 编程知识 正文

提交git步骤,git本地文件上传到仓库

时间:2023-05-03 18:18:05 阅读:129530 作者:1884

在版本迭代开发的过程中,我想很多人都提出过错误(至少良徐有过几次这样的体验)。 在这种情况下,新人程序员可能会被老虎驱使,紧张困扰。 资深程序员嫣然一笑,摸摸闪亮的脑袋,静静地恢复版本。

在版本回滚中经常使用以下两个命令:

获取重置

获取恢复

那两个命令的区别是什么? 请不要着急。 稍后详细介绍。

git reset假设我们的系统现在提交如下。

其中a和b是正常提交,c和d是错误提交。 现在我们想把c和d放回去。 此时,HEAD指针指向d提交(5lk4er )。 我们只需将HEAD指针移动到b提交(a0fvf8)即可实现目标。

如果有具备git基础的朋友,一定会想到git reset命令。 完整的命令如下:

git reset --hard a0fvf8

命令运行时,HEAD指针将移动到b提交下,如下图所示。

此时,远程仓库的HEAD指针没有变化,还在d提交中。 因此,如果直接使用git push命令,则无法将更改推送到远程仓库。 此时,只能使用-f选项强制将提交推送到远程仓库。

git push -f

用这种方法回滚代码的弊端很明显,就是将HEAD指针向后移动,然后丢失后续的提交信息。 将来,突然,不管c和d有多棒的想法,它们早就消失在历史长河中了。

此外,一些公司(如良徐的公司)还明确禁止使用git reset命令回滚代码。 理由与上述相同。 所以,必须找到可以回滚代码或保存错误提交的命令。 在这种情况下,git revert命令很有用。

git revert git revert的作用是通过反向创建新版本。 此版本的内容与要回退的目标版本相同,但HEAD指针指向新生成的版本,而不是目标版本。

要使用git revert命令实现上述示例,必须先revert D,然后revert C (如果有多个提交且需要回滚,则必须从旧版本开始revert ) :

git revert 5lk4er

git revert 76sdeb

现在将生成两个新的提交: d’和c’,如下图所示。

这里只有两个提交需要revert。 可以一个个回滚。 但是,如果有几十个呢? 一个个回滚一定是低效和容易出错的。 可以通过以下方式执行批量回滚:

gitrevertolder _ commit ^…newer _ commit

此时,错误地提交c和d也会被保留,将来摇锅的时候也是有根据的。 然后,这样操作的话,HEAD指针会向后移动,可以直接使用git push命令推送到远程仓库。 这种做法是企业鼓励的。

举个更难的例子吧。

假设现在有三个提交。 但是,不巧的是,那个错误的提交正好在中间。 以下图标:

在这种情况下,无法明确直接使用git reset命令将头部指针重置为a提交。 C提交是正确的,需要保留。 必须回滚所有c提交和b提交,然后通过使用cherry-pick命令重新生成c提交并生成新的提交c’’来回滚b提交。 完整的过程如下:

从以上比较可以看出,git reset和git revert之间的最大区别是git reset将丢失后续提交,而git revert将保留原始提交,反之则重新创建新提交。 企业应尽量使用git revert命令,但尽量不要使用git reset命令。

浏览博客[1] https://MP.weixin.QQ.com/s/H5 odqcmmhvyizpemwtvokw

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。