美文网首页
如何修改已完成的提交

如何修改已完成的提交

作者: 醉看红尘这场梦 | 来源:发表于2020-03-13 17:51 被阅读0次

我们创建了自己的第一个仓库,并且,在其中创建了两次提交记录。一旦理解了git中为文件创建快照的思路,git用起来就舒服多了。但在现实的工作中,我们不可能不犯错,当我们刚提交完就发现,文件里有个typo,该怎么办呢?

例如,在之前的最后一次提交中,我们故意在hello.txt创建了一个typo:“Hello Wrold”。

image

为了解决这个问题,针对我们所处的环境,各有不同的解决办法。

与别人共享代码时的处理方法

如果,我们已经和别人共享了这部分代码(例如:已经把代码提交到了GitHub)。这时,我们只能修改typo之后,然后重新addcommit一次。

自己在本地管理代码时的处理方法

如果,我们只是在本地使用git自己管理代码,情况就简单多了。这时,我们有两种处理方法。

一种,是使用git reset先撤销掉这次错误的提交,修改之后再重新提交。reset命令支持一个参数,我们可以传递--hard或者--soft。其中,--soft表示撤销提交,但是保留这次提交对文件的修改

例如,我们可以执行:

git reset --soft ae960b6382412a8290314168bbf8c67520732591

这里,ae960b6382412a8290314168bbf8c67520732591表示要返回的目标,我们可以从git log查看到这个ID。

这时,执行一下git status,可以看到hello.txt是准备提交状态,而它的内容,仍旧是提交前的Hello Wrold!。我们可以把它修改之后,重新addcommit

重新提交之后,再来看--hard参数的效果。这次,我们执行:

git reset --hard ae960b6382412a8290314168bbf8c67520732591

git就会在终端提示下面的信息:

image

执行git status,就会发现,我们修改hello.txt这个事情,已经彻底从git的记录中清除了,也就是说,hello.txt不仅回到了ae960b6这次提交,在这之后我们对这个文件的所有操作也被丢掉了:

image

而这,就是在撤销提交记录的时候,--soft--hard的差别。实际上,我们很少会直接使用--hard,因为用了,reset之后发生的事情就都追不回来了。

第二种方法,我们可以直接把修改typo添加到之前的提交里。为了演示这个方法,我们先把hello.txt的内容恢复成“Hello Wrold!”,并重新addcommit来恢复场景。

完成后,假设现在我们发现这个错误了,直接把这个typo改过来,并执行git add hello.txt。这次,提交的时候,我们直接使用--amend参数:

git commit --amend

git会打开编辑器,默认显示最近一次提交的日志:

image

当然我们也不用改,因为这本来就是这次提交的目的,我们只是改了一个typo而已,直接保存退出就好了。这样,最后这次提交就包含正确的内容了。

相关文章

  • 如何修改已完成的提交

    对于已完成的提交,如果其中不慎有错,是否有修改的机会呢?当然,不过可以采用的方法,取决于我们所处的环境。在这段视频...

  • 如何修改已完成的提交

    我们创建了自己的第一个仓库,并且,在其中创建了两次提交记录。一旦理解了git中为文件创建快照的思路,git用起来就...

  • Git命令-Linux下提交代码

    一、Linux 下 Git 提交代码的五个步骤 查看代码的修改状态 查看代码的修改内容 暂存需要提交的代码 提交已...

  • Git命令备忘

    Git文件的状态 已修改modified-文件被修改了,但是还没有提交保存。 已暂存staged-已修改的文件放在...

  • 修改与提交

    修改直接在本地的文件夹修改即可。修改完成之后,在bash内 就提交了。

  • Git常用操作

    一、gitcheckout 恢复某个已修改的文件(撤销未提交的修改): git checkout file-nam...

  • 代码提交一般有五个步骤

    代码提交代码提交一般有五个步骤:1.查看目前代码的修改状态2.查看代码修改内容3.暂存需要提交的文件4.提交已暂存...

  • Git -- 配置

    文件在git 的三种状态: 已提交(committed)、已修改(modified)、已暂存(staged) ...

  • git commit合并

    如何修改commit common git commit --amend之后使用vim命令正常修改 如何将当前提交...

  • 重装系统后git仓库续接过程

    重装系统前只是把git仓库复制粘贴到了别的盘,重装系统后面临如何把仓库状态续上去的问题(已提交、未提交、已修改未提...

网友评论

      本文标题:如何修改已完成的提交

      本文链接:https://www.haomeiwen.com/subject/melyjhtx.html