[扩展阅读]Git实用教程记录——修改最后一次提交、删除文件和重命名文件

修改最后一次提交

在开发过程中,你可能会遇到下面的问题

1.版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)

2.版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面

总的来说就是你提交到仓库中,但是文件写的或者保存的不够全面

执行 git commit --amend 命令修改最后一次提交即可。

执行命令后会立刻跳转到下边界面:

进入的界面是让你编辑提交说明,可以直接在里面更改提交说明

如果不需要修改,请按下快捷键 Shift + z + z(其实就是连续两个大写 Z)来退出,或者可以按下冒号(:),然后输入 q! 退出。那么会 Git 会保留旧的提交说明。

可以执行 git commit --amend -m "新的提交说明" 命令。

此时,Git 仓库中仍然只有两个版本:

暂存区域的内容也提交上去了:

删除文件

现在从工作目录中手动删除 README.md 文件,然后执行 git status 命令:

Git 同时提醒使用 checkout 命令可以将暂存区域的文件恢复到工作目录

假如你不小心把一张图片下载到了工作目录,然后又不小心提交到了 Git 仓库:

执行 git rm example.jpg 命令:

但是执行git status命令

Git 的意思是说它在仓库的快照中发现有个叫 yellow 的东西,但似乎在暂存区域和当前目录不见了

此时,你可以执行 git reset --soft HEAD~ 命令将快照回滚到上一个位置,然后重新提交,Git 就不会再提额外图片的事

rm 命令删除的只是工作目录和暂存区域的文件(即取消跟踪,在下次提交时不纳入版本管理)

特殊案例:还有两种情况你们可能会遇到,比如我在工作目录中增加一个 test.py 文件,然后执行 git add test.py 命令将其添加到暂存区域,此时我修改 test.py 文件的内容,那么暂存区域和工作目录就是两个不同的 test.py 文件了。此时如果我执行 git rm test.py 命令,Git 会下意识地阻止我,根据提示,执行 git rm -f test.py 命令就可以把两个都删除。还有另一种情况就是你可能只想删除暂存区域的文件(保留工作目录的),那么你可以执行 git rm --cached 文件名 命令实现目的。

重命名文件

执行 git mv game.py wordgame.py 命令

mv 命令相当于执行下边三条命令:

ren game.py wordgame.py
git rm game.py
git add wordgame.py

根据命令可知改完名字的文件只是更新到了暂存空间中,没有更新到仓库中

--amend 的理解

--amend 修改的是HEAD指向的版本
未对版本进行修改时,使用git log看到的版本为 version_00、version_01、version_02。

最近版本为 version_02 此时HEAD指向的是 version_02,如果使用--amend则实际是建立了一个新的副本 version_02_1,其中的内容是 version_02中未改动的内容 + 新的改动

此时git log 看到的版本 version_00、version_01、version_02_1,后面继续添加的版本 version_03 就是以 version_02_1为根节点生成一条枝干了。

如果将 HEAD 修改为 version_02 的地址,此时使用 git log 看到的还是之前的 version_00、version_01、version_02。以 version_02_1 为根节点添加的 version_03 不会显示

那么如果将HEAD修改为 version_01 的地址,再使用 --amend 则会在 version_01 的基础上建立副本 version_01_1,此时 使用 git log 只能看到 version_00、version_01_1。如果继续添加版本的话就会以 version_01_1为根节点生成一条枝干。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值