创建修正提交

GitGitBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Git 中,修正提交(fixup commit)是一种特殊类型的提交,用于修正之前的提交。当你想对已经提交的内容进行小的更改,而无需创建新的提交时,通常会使用它。当你在一个有许多贡献者的大型项目中工作时,修正提交特别有用,因为它们允许你进行小的更改而不会干扰其他人的工作。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("`Git`")) -.-> git/BasicOperationsGroup(["`Basic Operations`"]) git/BasicOperationsGroup -.-> git/commit("`Create Commit`") subgraph Lab Skills git/commit -.-> lab-12717{{"`创建修正提交`"}} end

创建修正提交

假设你正在和其他几位开发者一起处理一个项目,你发现几天前提交的一个内容中有个小错误。你想修复这个错误,但又不想创建一个新的提交并干扰其他开发者的工作。这时修正提交就派上用场了。通过创建一个修正提交,你可以进行必要的更改而无需创建新的提交,并且在下次变基(rebase)时,修正提交会自动与原始提交合并。

例如,你的任务是将字符串“hello,world”写入hello.txt文件,并将其作为一个“修正”提交添加到提交信息为“添加了file1.txt”的提交中,以便在后续的变基操作中能自动合并。

对于这个实验,我们使用来自https://github.com/labex-labs/git-playground的仓库。

  1. 克隆仓库,进入该目录并配置身份:
git clone https://github.com/labex-labs/git-playground
cd git-playground
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
  1. 创建一个hello.txt文件,在其中写入“hello,world”并将其添加到暂存区:
echo "hello,world" > hello.txt
git add.
  1. 要创建一个修正提交,你可以使用git commit --fixup <提交>命令:
git commit --fixup cf80005
## 这是提交信息为“添加了file1.txt”的提交的哈希值。

这将为指定的提交创建一个修正提交。请注意,在创建修正提交之前,你必须先暂存你的更改。4. 创建修正提交后,你可以使用git rebase --interactive --autosquash命令在下次变基时自动将修正提交与原始提交合并。例如:

git rebase --interactive --autosquash HEAD~3

打开交互式编辑器时,你无需更改文本,保存即可退出。这将对最后3次提交执行变基操作,并自动将任何修正提交与其对应的原始提交合并。

这是运行git show HEAD~1命令的结果:

commit 6f0b8bbfac939af197a44ecd287ef84153817e9d
Author: Hang <[email protected]>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

diff --git a/file1.txt b/file1.txt
new file mode 100644
index 0000000..bfccc4a
--- /dev/null
+++ b/file1.txt
@@ -0,0 +1 @@
+This is file1.
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..2d832d9
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+hello,world

总结

修正提交(fixup commits)是一种有用的工具,用于对之前的提交进行小的更改,而不会干扰其他开发者的工作。通过创建一个修正提交,你可以进行必要的更改,并在下次变基(rebase)时让它们自动与原始提交合并。

您可能感兴趣的其他 Git 教程