Git 如何返回到提交修复程序/补丁程序,但之后不更改任何内容?
我想回到一个旧版本的代码,并只修复该版本。我不希望修复集成到master中,因为在需要修复的版本之后出现的任何版本都不会出现问题。以下图为例,我想移动到C3,进行修复,提交更改,但不在其下方的任何提交上合并这些更改(C4和C5) 我在考虑做什么Git 如何返回到提交修复程序/补丁程序,但之后不更改任何内容?,git,Git,我想回到一个旧版本的代码,并只修复该版本。我不希望修复集成到master中,因为在需要修复的版本之后出现的任何版本都不会出现问题。以下图为例,我想移动到C3,进行修复,提交更改,但不在其下方的任何提交上合并这些更改(C4和C5) 我在考虑做什么 git签出C3 git签出-b补丁 应用修复程序 git commit-m“修复旧版本的软件” git签出C3 git合并补丁 并将其保留在那里,供以后编译软件时使用。不要将修复应用于C4或C5,因为它们不会出现问题。我会这么做,但我不确定这是否正确。因
git签出C3
git签出-b补丁
git commit-m“修复旧版本的软件”
git签出C3
git合并补丁
物理上不可能更改任何提交。因此,您在这里提出的建议很简单,而且非常有效:commit
C3
将永远保持commitC3
。但是,您需要发布一个补丁版本的version1.0.4
,因为这是commitC3
,它是不变的
您不能将错误修复提交合并到提交C3
,但不需要这样做。它是一个分支。你已经把你的承诺和新的承诺画在了底部;我喜欢把我的画向右边。所以我会把你的情况画成这样:
tag:v1.0.4
|
v
C1--C2--C3
\
C4 <-- tag:v1.0.5
\
C5 <-- master (HEAD)
^
|
tag:v1.0.6
进行新提交时,新提交的父级为C3
,名称patch
指向新提交:
tag:v1.0.4
|
v
C1--C2--C3--C7 <-- patch (HEAD)
\
C4 <-- tag:v1.0.5
\
C5 <-- master
^
|
tag:v1.0.6
标签:v1.0.4
|
v
C1--C2--C3--C7谢谢。解释得很好。我现在明白了。
tag:v1.0.4
|
v
C1--C2--C3--C7 <-- patch (HEAD)
\
C4 <-- tag:v1.0.5
\
C5 <-- master
^
|
tag:v1.0.6