Git重置一个分支

Git重置一个分支,git,Git,因此,我做了一些更改,并在第二次提交中提交了它们-“wslanguagelabel-color changes”。这些更改现在在master上。然后我开始了一个新的分支-回复 但是,我想去掉显示的第二次提交中的更改-“wslanguagelabel-color changes”,这样master现在可以指向“blocking-works”,然后继续处理repress分支 这里是我的问题:如果我硬重置主机到“阻塞-工作”,当我最终合并回复时,这会导致问题吗?这就是我不太了解git的地方,以及引擎盖

因此,我做了一些更改,并在第二次提交中提交了它们-“
wslanguagelabel-color changes
”。这些更改现在在master上。然后我开始了一个新的分支-
回复

但是,我想去掉显示的第二次提交中的更改-“
wslanguagelabel-color changes
”,这样master现在可以指向“
blocking-works
”,然后继续处理
repress
分支

这里是我的问题:如果我
硬重置
主机到“
阻塞-工作
”,当我最终合并
回复时,这会导致问题吗?这就是我不太了解git的地方,以及引擎盖下到底发生了什么。我担心
回复
在第二次提交后仍会有更改,我想将其删除,但我不确定我的想法是否正确


对于从分支中删除提交的简单情况,BLAZ下面的回答是正确的


MU在对我的评论的回复中给出了一个更完整的答案。

与其在最新提交时签出一个分支,然后重置
头部,不如在该特定提交时签出分支
回复
,如下所示

git checkout -b replies <SHA_of_commit>
git签出-b回复

这样,您的新分支将完全处于您需要的提交状态,并且您不必对
主分支执行任何硬重置。除非您在
回复
分支中更改的代码集与在后续提交中在
分支中更改的代码集相同,否则合并也应该正常工作。

而不是在最新提交时签出分支,然后重置
,您应该在该特定提交处签出分支
回复
,如下所示

git checkout -b replies <SHA_of_commit>
git签出-b回复

这样,您的新分支将完全处于您需要的提交状态,并且您不必对
主分支执行任何硬重置。除非您在
回复
分支中更改的代码集与在后续提交中在
分支中更改的代码集相同,否则合并也应该正常工作。

而不是在最新提交时签出分支,然后重置
,您应该在该特定提交处签出分支
回复
,如下所示

git checkout -b replies <SHA_of_commit>
git签出-b回复

这样,您的新分支将完全处于您需要的提交状态,并且您不必对
主分支执行任何硬重置。除非您在
回复
分支中更改的代码集与在后续提交中在
分支中更改的代码集相同,否则合并也应该正常工作。

而不是在最新提交时签出分支,然后重置
,您应该在该特定提交处签出分支
回复
,如下所示

git checkout -b replies <SHA_of_commit>
git签出-b回复

这样,您的新分支将完全处于您需要的提交状态,并且您不必对
主分支执行任何硬重置。除非您在
回复
分支中更改的代码集与在后续提交中在
分支中更改的代码集相同,否则合并也应该可以正常工作。

分支
回复
将保留第二次提交时所做的更改。你可以 有选择地从历史记录中删除第二次提交,方法是:

git checkout replies
git rebase -i HEAD~2

删除第二次提交时的行。

分支
回复将保留第二次提交时的更改。你可以
有选择地从历史记录中删除第二次提交,方法是:

git checkout replies
git rebase -i HEAD~2

删除第二次提交时的行。

分支
回复将保留第二次提交时的更改。你可以
有选择地从历史记录中删除第二次提交,方法是:

git checkout replies
git rebase -i HEAD~2

删除第二次提交时的行。

分支
回复将保留第二次提交时的更改。你可以
有选择地从历史记录中删除第二次提交,方法是:

git checkout replies
git rebase -i HEAD~2

在第二次提交时删除该行。

我认为这会有所帮助:想想绿色标签、
回复、
主控
trishtext
,就像:标签、绿色便笺或类似标签一样

这些绿色的便笺标签粘贴在圆圈上,圆圈是实际提交的内容

您可以随时剥下标签并将其粘贴到任何其他提交循环上

如果一个提交循环没有标签,并且没有直接连接到它上面的另一个标签为“提交”的循环,那么它将被“放弃”。最终放弃的提交会被垃圾收集。1如果你搞砸了,这会让你有机会重新标记它们,但最好还是认为它们已经消失了,因为它们很难找到(
git reflog
有助于找到它们,还有
git log-g
,但它会变得混乱)

在所有情况下,提交本身而不是标签构成“提交图”。每个提交永久记录其父提交(如果合并,则记录两个或多个,但通常仅记录一个父提交)。要查看提交序列,git以标签开始,如
master
repress
。它指定了一个特定的提交。Git查看该提交并告诉您一些关于它的信息。然后,它移回该提交的父级,从
c1173c4
向下移动到
af211ba
,并告诉您有关该提交的一些信息,依此类推


执行重新基(正如一些人所建议的)复制一系列提交。下面是以文本形式显示的类似序列(没有漂亮、没有颜色等,但与您显示的代码片段的想法相同):

我现在可以
git签出分支
——这让我将
4396360
提交为我的工作树,然后提交
git rebase master
。这样做的目的是复制我在三个“侧分支”提交中所做的更改