如果我有N个提交,我如何从N-3个提交分支?


当前回答

魔法可以通过git重置来实现。

创建一个新的分支并切换到它(因此所有最新的提交都存储在这里)git结帐-b your_new_branch切换回以前的工作分支(假设它是主分支)切换到主分支删除最新的x个提交,保持master干净git reset--hard HEAD~x#在您的情况下,x=3

从这一刻起,所有最新的x提交都只在新分支中,不再在上一个工作分支(master)中。

其他回答

我可以这样做:

git branch new_branch_name `git log -n 1 --skip 3 --format=%H`

必须在其中输入跳过值。0是最新的,1是先前的,2是之前的提交,等等。

还没人提到git开关?

您可以执行以下操作:

git checkout<commit hash>

或使用符号引用:

git结帐头~3

然后:

git开关-c我的新功能分支

git checkout -b <branch-name> <sha1-of-commit>

这将使用一个命令创建分支:

git push origin <sha1-of-commit>:refs/heads/<branch-name>

我更喜欢这种方式,因为它会立即创建分支(之后不需要额外的push命令)。

使用源树[当前使用的版本:3.1.3]

在源树中打开历史记录

它将在主窗口中列出所有提交右键单击所需的提交,然后单击分支。。。选项在新窗口中为分支指定名称,然后单击“创建分支”。新的分支(系统本地)将与其他现有分支一起出现在左侧,您可以将其推到源位置以将其放到存储库中,这样其他用户就可以使用它。