Git学习总结(三)
修改最新commit的message有的时候,commit后,发现提交写的message没有代表性的意义。所以想要改一下message的内容。那该怎么办呢?可以通过以下命令来实现。git commit --amend输入上面的命令,就出现图片上的内容。这里我想将’Update readme.md’这个message改成’Update readme to readme.md’,直接通过L...
修改最新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。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)