尽管reset对于回滚到特定的点很有用,但它也可能会造成问题。如果对之前已经被推送到远程仓库的内容进行本地化重置,就会出现问题。如果正在对已经在远程的代码库中的内容进行变更,则有可能会影响其他那些已经克隆了最新变更并且正在针对那些已推送变更进行处理的用户。

  在这种情况下,如果完成了重置并且进行了变更,然后推送到远程,那么当下一个人对其内容进行合并时就会出现- - 些相关的合并挑战,这取决于HEAD之前所指向的位置。

  出于这些原因,建议不要对已经被推送到远程仓库的代码使用reset或任何会变更历史以及造成难以合并情形的Git操作。

  那么如果由于reset问题太严重而不能在特定情形中使用它,又要如何进行回滚呢?一种方式是签出内容的一个老版本,然后将其签入当前版本的最顶部。不过,Git提供了一种更为自动化的、优雅的解决方案: git revert。

  revert所做的就是尝试消除在提交中所做的不想要的变更影响。例如,假定最近提交了一个增加两行的变更,并且希望回滚到该变更之前的变更。git reset HEAD^命令会移动回仓库中的HEAD以指向前一个提交。 如前所述,如果代码之前被推送到远程仓库并且其他人正在处理这些代码的话,那么这有可能会造成-些合并问题。

  不过,可以使用git revert。在这个例子中,git revert HEAD^会检查不同的提交并且创建一个 新的提交以消除变更一也就是说, 会创建一个新的删除 那两行的提交。

  这里的差异在于,revert是添加消除了变更影响的内容,这与指向老内容相反。在分支末端添加内容不会引发在重置时可能会遇到的相同类型的合并问题。处理额外的变更通常会出现在使用远程仓库时。变更历史或回滚到远程端的前一-个提交则不会出现需要处理额外变更的情况。

关于TeamDoc软件:

TeamDoc是基于服务器/客户端架构的轻量级文件管理软件。TeamDoc将文件集中加密存储在您单位自己的服务器中,员工使用TeamDoc客户端访问服务器,从而获得与自己权限相关的权限:登入后与“我的电脑”界面类似,可以看到自己该看的文件,编辑自己能编辑的文档,对于能看到的文件,还可以细分文档权限,进而做到能看不能拷,能看不能截屏等功能,多种权限灵活设置,在线协同编辑、全文搜索、日志与版本追踪,快速构建企业文档库。告别假大空,我们提供值得您选择的、易用的、可用的文档管理软件。现在就访问TeamDoc首页

TeamDoc软件界面(点击可放大)

版权所有:南京网亚计算机有限公司,本文链接地址: revert- 消除变更