Git提交后追加修改操作指南

在开发时经常会遇到在git commit后,又把文件修改了一下的情况,此时要如何操作才能避免提交多个commit呢?


前面你已经走了这两步:

sql 复制代码
git add .
git commit -m "fix:修改了一个bug"

此时你提交的代码还在本地暂存区,然后你又发现没改完,又有新修改文件产生。

接下来,你的操作步骤应该是这样的:

基本步骤

  1. 将修改的文件添加到暂存区(Staging Area)

    这里还是和你平时提交前一样,使用 git add 命令。

    csharp 复制代码
    # 添加某个特定文件
    git add <文件名>
    # 或者,添加所有当前修改的文件
    git add .
  2. 执行修改提交(Amend Commit)

    这会把你刚刚添加的修改,合并到上一次的commit提交中,并且会重写(覆盖) 上一次的提交。

    sql 复制代码
    git commit --amend

git commit --amend 后会发生什么?

如果你的文本编辑器(如 Vim, VSCode 等)弹出来了一段文本内容,不要慌,你会看到上一次提交的提交信息。

这时你可以 直接保存退出 (一般是输入:wq),就使用原来的提交信息。或者也可以修改提交信息,然后保存退出,相当于这是你修改上次写错的提交信息的机会。

  1. 命令执行完成后,commit被重置

你之前的那次提交(我称之为 Commit A)就会被一个新的提交(姑且称之为 Commit A')所替代。Commit A' 包含了原来的更改和你刚刚添加的更改。

最终效果:你的提交历史中看起来只有一次提交,但这次提交包含了你后来追加的更改,很nice。


重要提醒(尤其涉及远程仓库时)

涉及到远程仓库时,我都是很小心的,因为这可能会污染同事的代码,前面几步都是在本的操作。这里说一下涉及远程仓库时要注意的地方:

如果已经推送到远程了怎么办?

如果你已经将原来的提交 git push 到了远程仓库,那么在你本地执行 --amend 后,你的本地历史就和远程历史不一致了。

这时你需要使用 git push --force-with-lease推荐 )或 git push --force 来强制覆盖远程仓库的历史。

请谨慎使用 force push,因为这会影响此项目中的其他程序员------如果他们已经基于你原来的提交进行了开发,强制推送会打乱他们的流程。通常只在确定只有你一人在修改这个分支时才能这么做。

操作流程总结

csharp 复制代码
# 1. 提交后,发现还有需要修改的地方,继续修改文件
# 2. 将修改后的文件加入暂存区
git add <file(s)>
# 或者
git add .

# 3. 将修改追加到上一次提交
git commit --amend
# (在弹出的编辑器中确认或修改提交信息,然后保存退出)

# 4. 【如果之前的提交已经推送到远程】需要强制推送更新
git push --force-with-lease

一般情况下,只需完成前两步 git addgit commit --amend 即可。

如果这篇文章对你有用,请帮我转发分享,谢谢支持!

相关推荐
我一定会有钱5 天前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code
LXY_BUAA5 天前
Git_在飞牛中部署 GitLab_20260817
git·gitlab
Jeanyia8 天前
GitLab 配套 Git 常用命令
git·gitlab
极小狐8 天前
极狐GitLab 补丁版本:19.2.1、19.1.3、19.0.5
网络·安全·gitlab·极狐gitlab·安全更新·补丁版本
rustfs9 天前
GitLab 如何与 RustFS 集成?
分布式·rust·gitlab
郝亚军11 天前
gitlab常用命令
gitlab
xixingzhe214 天前
Java 使用 GitLab4J 实现 WebHook
gitlab
童槿顏丶16 天前
GitLab部署到Linux
linux·运维·gitlab
InfinitePlus16 天前
Gitlab docker版本安装
docker·容器·gitlab
进击切图仔16 天前
GitLab 新用户创建与项目授权操作指南
gitlab