Git 开发常用命令大全

Git 开发常用命令大全

目录


一、覆盖上一次提交

1. 使用 git commit –amend(最常用)

这会修改最近一次提交,可以将新的更改合并到上一次提交中。

1
2
3
4
5
6
7
8
9
10
11
# 将当前的更改添加到暂存区
git add .

# 覆盖上一次提交(会打开编辑器修改提交信息)
git commit --amend

# 直接使用原来的提交信息,不打开编辑器
git commit --amend --no-edit

# 同时修改提交信息和作者信息
git commit --amend --author="新作者 <email@example.com>"

2. 如果已经推送到远程仓库

1
2
3
4
5
6
# 先本地修改
git add .
git commit --amend

# 强制推送到远程(注意:这会重写远程历史)
git push --force-with-lease origin 分支名

3. 使用 git reset 然后重新提交

1
2
3
4
5
6
7
8
# 软重置到上一次提交(保留更改在暂存区)
git reset --soft HEAD~1

# 查看状态,更改已经在暂存区
git status

# 重新提交
git commit -m "新的提交信息"

4. 具体使用场景示例

场景1:忘记添加文件到上次提交

1
2
3
# 发现少提交了文件
git add 忘记的文件.txt
git commit --amend --no-edit

场景2:修改提交信息

1
2
# 只修改提交信息,没有代码更改
git commit --amend -m "新的提交信息"

场景3:修改提交的作者信息

1
git commit --amend --author="新姓名 <new-email@example.com>"

5. 重要注意事项

  • 只适用于本地最新提交--amend 只能修改最近一次提交
  • 已推送的提交:如果已经推送到远程,需要强制推送
  • 协作分支:在共享分支上谨慎使用,可能会影响其他协作者
  • **推荐使用 --force-with-lease**:比 --force 更安全

6. 完整工作流程示例

1
2
3
4
5
6
7
8
9
10
11
# 1. 做一些修改
echo "新内容" >> file.txt

# 2. 添加到暂存区
git add file.txt

# 3. 覆盖上一次提交
git commit --amend

# 4. 如果已推送,强制更新(谨慎使用)
git push --force-with-lease origin main

推荐:在个人分支或功能分支上可以自由使用 --amend,但在主分支或共享分支上要谨慎使用。

返回目录

二、删除某次提交

1. 使用 git revert(推荐用于共享仓库)

这会创建一个新的提交来撤销指定提交的更改,不会修改历史记录。

1
2
3
4
5
6
7
8
# 撤销某次提交
git revert <commit-hash>

# 撤销最近的一次提交
git revert HEAD

# 撤销多个连续的提交(从commitA到commitB,不包括commitA)
git revert <commitA>..<commitB>

2. 使用 git reset(适用于本地仓库)

这会直接删除提交记录,会重写历史,不推荐用于已推送到远程仓库的提交。

1
2
3
4
5
6
7
8
9
10
11
12
# 软重置 - 保留工作目录和暂存区的更改
git reset --soft <commit-hash>

# 混合重置(默认)- 保留工作目录的更改,重置暂存区
git reset <commit-hash>
git reset --mixed <commit-hash>

# 硬重置 - 完全删除提交,不保留任何更改
git reset --hard <commit-hash>

# 删除最近的一次提交(硬重置)
git reset --hard HEAD~1

3. 使用 git rebase 交互式模式

适用于删除中间某次提交或重新排列提交历史。

1
2
3
4
5
# 交互式重写最近n次提交
git rebase -i HEAD~n

# 或者指定到某个提交
git rebase -i <commit-hash>

在交互式界面中,将要删除的提交前的 pick 改为 drop 或直接删除该行。

4. 使用 git cherry-pick 选择性应用提交

如果你想保留某些提交但删除其他提交:

1
2
3
4
5
# 创建一个新的分支
git checkout -b new-branch <base-commit>

# 逐个挑选想要的提交
git cherry-pick <commit-hash1> <commit-hash2> ...

5. 注意事项

  • git revert:最安全,适用于公共分支,不会影响其他协作者
  • git reset 和 git rebase:会重写历史,只适用于本地分支或私有分支
  • 如果已经推送到远程仓库,使用 git push --force-with-lease(比 --force 更安全)来强制推送

6. 示例场景

1
2
3
4
5
6
7
8
9
10
# 安全地撤销某次提交(推荐)
git revert abc1234
git push origin main

# 本地删除最近3次提交(危险操作)
git reset --hard HEAD~3

# 删除历史中的某次特定提交
git rebase -i abc1234^
# 然后在编辑器中删除对应的提交行

选择哪种方法取决于你的具体需求和是否已经将提交推送到远程仓库。

返回目录

三、实用技巧总结

安全操作建议

  1. **优先使用 git revert**:对于已推送的提交,使用 revert 最安全
  2. **使用 --force-with-lease**:比 --force 更安全,会检查远程分支是否有新的提交
  3. 在功能分支上操作:避免在主分支上直接修改历史
  4. 备份重要分支:在修改历史前先创建备份分支

常用命令速查

操作 命令 适用场景
修改最近提交 git commit --amend 本地未推送的提交
安全撤销提交 git revert <hash> 已推送的提交
删除本地提交 git reset --hard HEAD~n 本地未推送的提交
交互式修改历史 git rebase -i HEAD~n 本地分支历史整理
强制推送 git push --force-with-lease 需要重写远程历史时

最佳实践

  1. 提交前检查:使用 git statusgit diff 检查更改
  2. 小步提交:频繁提交,便于后续修改和回退
  3. 清晰的提交信息:使用规范的提交信息格式
  4. 分支策略:使用功能分支进行开发,避免直接在主分支上修改

返回目录


Git 开发常用命令大全
https://zuyue200.github.io/2025/10/11/git-work-cmds/
作者
zuyue200
发布于
2025年10月11日
更新于
2025年11月9日
许可协议