Git学习总结(三)

修改最新commit的message

有的时候,commit后,发现,提交写的message没有代表性的意义。所以想要改一下message的内容。那该怎么办呢?可以通过以下命令来实现。

git commit --amend


输入上面的命令,就出现图片上的内容。这里我想将’Update readme.md’这个message改成’Update readme to readme.md’,
直接通过Linux的命令,对文件最上面一行更改即可。然后保存。再看日志,就可以发现message变了。

但是,这里需要注意的是,此时指向这个commit的id已经发生了变化。

ps:git commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明。

如何修改以前提交的commit的message

如果提交了很多个commit,但是后面发现,其中有一些commit中的message不是很容易让人理解,此时,就需要对其进行修改。修改的命令如下。

git rebase -i 9a70b1e87768e83413da48105f  #后面的commit是当前要修改message的父commit。以父为基石。

可以看到这个命令后面跟的是commit的id,并且是当前commit的父id。

此时,想将539ced1这个commit的message改为’Add js and index.js’,就可以使用上面的命令。以8d113be这个commit为基石。输入上面的命令就会出现下面的界面。

只需要将pick换成reword即可。
具体参数解释,见下:

pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)

因为,我只需要更改commit的message,所以,就用reword就行了。当执行完上一个命令,修改完保存后,就会弹出下面这个窗口。

这里这需要使用Linux中的命令,对commit的message编辑,保存,即可。后面再看一下git的log。就发现。commit的message信息改过来了。

如何把多个commit整理成一个

下面,想把所有提交的index.html、css/index.css、js/index.js这三个commit,合成一个。这里又要用到rebase命令。

git rebase -i [开始commit] [结束commit]   #在执行这个命令时。
如果没有指定 结束commit,那么结束commit 默认为当前分支最新的 commit,那么rebase 结束后会自动更新当前分支指向的 commit
如果指定了结束 commit,而且结束 commit不是当前分支最新的 commit,那么rebase 后会有生成一个 游离的 head,,而且当前分支指向的commit 不会更新。


这里会发现一个问题:如果前面没有父节点怎么办呢?
答:当交互命令回车后,会出现设置界面,只能手动把最根部的那个commit添加进来,并配置好对应的策略。

因为这里需要将后面几个commit合并到第一个,所以,第一个commit需要保留。其余的三个,需要合并。使用squash,简写为s。修改完,保存,弹出下面界面。

这里我保留了以前的commit的message,并且添加了新的commit信息。
ps:出现这个界面之前,可能git会提示你使用git rebase --continue ,可以按照提示输入命令即可。
全部改完后,三个commit就合并完了。

如何把间隔的几个commit整理成一个

遇到几个间隔的commit怎么办呢?就像下面这样。

要把前两个commit和最后几个commit合并。这里还是要使用rebase这个命令。

git rebase -i [开始commit] [结束commit]
git rebase --continue # 加上--continue参数让rebase继续处理
git rebase -i --root # 该命令允许你在分支上变基根提交,也就是第一个commit。
git rebase --abort # 会回到rebase操作之前的状态,之前的提交的不会丢弃。

因为我这个是在第一个commit上变更,所以有两种方法。
一、使用git rebase -i 开始commit 结束的commit,然后在弹出的修改页面,手动加上当前的commit的id。就像前面讲到的。
二、使用git rebase -i --root命令即可。

注意,因为修改的间接的commit。所以,需要把合并的commit都放到一起。如下图:

'Add a.txt’这个commit并不与其余的commit合并。所以,就需要将它移到最下面。将需要合并的放到一起。如图:

因为合并,始终都需要一个基底,所以就以第一个commit为父。pick是保留当前commit的参数。其余要合并的就需要改为squash,缩写为s。然后保存
之后就会弹出设置commit message的页面。设置完成就合并成功了。

通过查看日志,成功的将之前的几个commit合并到了一起。现在只剩下两个commit。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值