GIT:新分支的最后一个分支状态
我有两个分支机构:GIT:新分支的最后一个分支状态,git,Git,我有两个分支机构: -发展 -新特点(来自发展) 分支新功能中有40个提交。 我只需将所有更改(上次新功能状态)设置为新分支新功能单个。 我不能做rebase,因为开发分支现在太新了,要让rebase抛出所有40个提交太难了 创建另一个分支新特征 在新功能中添加远程上游单个到新功能:git remote Add new feature 签出到新功能单个分支 从新特性到新特性的拉动更改单个:git拉动新特性 提示:列出所有连接到分支的源和其他远程url:git remote-v这是否符合您的要求
-发展
-新特点(来自发展)
分支新功能中有40个提交。
我只需将所有更改(上次新功能状态)设置为新分支新功能单个。
我不能做rebase,因为开发分支现在太新了,要让rebase抛出所有40个提交太难了
提示:列出所有连接到分支的源和其他远程url:git remote-v这是否符合您的要求
git checkout -b new-feature-single new-feature
这将创建一个新分支
newfeaturesingle
,该分支指向newfeature
当前执行的相同提交。这似乎是你想要做的,但如果不是,也许需要一些额外的澄清
您的一条评论似乎表明,在此之后,您希望将
新功能单个
转换为单个提交,完成与新功能
中提交顺序相同的更改。在上述步骤之后,您可以通过运行git rebase-i development..HEAD并将除第一行之外的所有操作更改为“squash”(或简单的“s”)来实现这一点。如果您已经完成了上述步骤,那么这将不会触及您的新功能
分支,而是将新功能保持为单个
,并从同一原点分支,并包含新功能
提交序列的累积更改。首先,找到您的新功能的共同祖先“开发”和“新功能”分支。根据您的描述,它很可能是“开发”当前指向的提交,但是有一个方便的命令来查找特定的分支,称为:
git合并基础新特性开发
为了便于讨论,我们假设上面的命令发出“abc123”。
接下来,基于提交“abc123”创建一个名为“new feature single”的新分支:
git checkout-b新功能单abc123
您现在应该签出了“新功能单一”,并且该新分支指向与“新功能”分支起始位置相同的父级
最后,将“new feature”中的提交合并到“new feature single”中,并将它们全部压缩为单个提交:
git合并--挤压新特性
“new feature single”(新功能单一)分支现在将“new feature”(新功能)的所有更改合并到一个提交中。这就是我认为您要求的,尽管我不完全清楚您希望实现什么:
$ git checkout -b new-feature-single development
# make a new branch, starting from development/HEAD, with no new commits
$ git merge --squash new-feature
# apply all the changes from new-feature
$ git commit
# create a single commit with all those changes
请注意,稍后将此功能与
新功能
合并不会有好的表现,因为git会看到您独立地进行两次更改,并且无法判断它们是否相关。完成后,新功能单个
与新功能
有何不同?是否相同(直到您开始提交两个分支),或者有点不同?新功能单一
只需要有像新功能
这样的更改,但只需要有一个提交就可以将所有更改都保存在一个OK中,所以您希望将所有这些提交压缩到一个提交中-它是否应该与新功能
具有相同的祖先?我不在乎,只要有新的分支就行了一次提交将有所有更改您可以接受只重定功能分支的基础并挤压所有提交,这样您的功能分支上就只有一次提交?您可以通过交互式重定基础来实现这一点。它会创建一个新分支,就像旧分支一样,具有相同的40次提交。我需要一次提交的新分支将有一个ll changesYes,就是这样!我怀疑它是--squash命令,但我不知道如何使用它…在我的情况下,属于新功能的分支不是Nessary。我只需要进行我的更改(独立的更改更好),正如问题中所述。所以你的答案绝对正确!谢谢!