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
。这样做的目的是复制我在三个“侧分支”提交中所做的更改