有时候在一个分支的多次意义相近的 commit,会把整个提交历史搞得很混乱,此时可以将一部分的 commit 合并为一个 commit,以美化整个 commit 历史,可以使用 rebase 的方法来合并多次 commit,主要步骤如下:
Step1:git log 查看当前的提交历史
比如需要将以下 3 个 ”请假应用客户端代码优化“ 的 commit 合并为一个 commit;
Step2: git rebase 进行 git 压缩
执行 git rebase -i HEAD~4 对最近的 4 个 commit 进行 rebase 操作;
具体的操作下面的 Commands 说明得很清楚了,对于 commit 合并可以使用 squash、fixup 指令,区别是 squash 会将该 commit 的注释添加到上一个 commit 注释中,fixup 是放弃当前 commit 的注释;
编辑后保存退出,git 会自动压缩提交历史,如果有冲突,记得解决冲突后,使用 git rebase --continue 重新回到当前的 git 压缩过程;
Step3: 推送到远程仓库 git push -f
重新查看提交提交历史,会发现这些 commit 已经合并了,整个提交历史简洁了很多:
①不设置跟踪
git push origin t6
②设置跟踪
git push --set-upstream origin 分支名
git push
③强制推送
git push -f
常用于变基,合并、删除、修改提交内容之时
1、简介在Git的使用过程中,每次完成代码修改过后,即需要将修改内容保存到本地的某个分支中,然后将其推送到远端分支中,而每一次的提交都将以一次commit的形式保存至分支中,使用人员既可以使用命令行进行提交内容的查看、编辑和修改,也可以在git的操作界面上进行相应的操作,同时也可以直接下载该提交下对应的所有代码内容,如下图所示,而本文主要是从命令行操作的角度来介绍Git的commit相关操作2、使用(1)提交在完成代码修改后,可以通过git status来查看代码变更的基本情况,也可以通过git
当你提交了代码,结果发现代码中还有的地方要改善,可以通过git commit --amend来追加提交,这样就可以避免生成两次提交
有以下两种情况:
1.如果还没有push到远程
git commit --amend // 修改上一次的提交
// 进入提交信息编辑界面
// 修改保存退出
2.已经push到远程了
git commit --amend // 修改上一次的提交
// 进入提交信息编辑界面
// 修改保存退出
// 强制推送 --> 如果使用--f
git commit --amend
通过这个命令可以修改最新的commit提交。也就是指向当前 HEAD 的那次提交。但是,如果想修改的是倒数第二个commit提交,应该怎么办呢?
git rebase 就像一块臭豆腐,没吃之前闻起来好臭,吃过以后发现“真香”。不过话说回来,git rebase 也算是 git 里边的高级操作了,下来我们就来看看怎么用它来修改倒数第二个 commit 吧!
任何东西都有个因果缘由,我写这篇博客的原因也.....
Git 中允许修改已经提交的commit,包括最近一次提交以及最近多次提交。修改最近多次提交比较复杂,以后会有介绍。本文主要是解释下开发过程中遇到频次比较高的修改最近一次提交amend命令。
从一个简单的例子入手。
# 初始化一个git项目
git init
# 添加一个文件,并输入一些内容
vim a.txt
之后提交当前文件
git add .
git commit -m "v1"
可以看到当前的状态,我这里使用了可视化的工具sourcetree
接着,比如我有做了一些调整,
刚刚完成commit,但发现有一个文件忘了加上,又不想为了这个文件重新commit,这时我们可以追加文件到最近一次的commit。
我们这里有一个名为Cinderella.html的文件,想把它加到最近的一次commit,先git add,然后使用下述命令。
git commit --amend --no-edit
如果是创建了一个空目录,再看一下状态,Git的状态没有发生改变
,这是因为Git在计算产生对象的时候,是根据“文件内容进行计算的”。所以只是新增一个空目录,Git是无法处理的。
空的目录是无