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


当前回答

对于GitGUI用户,您可以可视化所有历史记录(如果需要),然后右键单击要分支的提交并输入分支名称。

其他回答

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

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

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

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

在源树中打开历史记录

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

这是我所做的:

C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'

C:\Users\jaimemontoya\[path]\app>git branch
  master
* responsivenavigation

在本例中,8a75b001096536b3216022484af3026aa9c7bb5b是属于主分支的旧提交。

转到git存储库的特定提交

有时,在处理git存储库时,您希望返回到特定的提交(修订),以便在特定的时间获得项目的快照。要做到这一点,您需要提交的SHA-1哈希,您可以使用以下命令轻松查看日志:

git log --abbrev-commit --pretty=oneline

这将为您提供所有提交和SHA-1哈希的简短版本的紧凑列表。

现在您知道了要转到的提交的哈希值,可以使用以下2个命令之一:

git checkout HASH

or

git reset --hard HASH

结账

git checkout<commit><path>

告诉git将路径的当前状态替换为给定提交中的状态。路径可以是文件或目录。

如果没有给出分支,git将接受HEAD提交。

git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.

如果没有给定路径,git将HEAD移动到给定的提交(从而更改您正在进行的提交)。

git checkout branch //means switching branches.

重置

git reset <commit> //re-sets the current pointer to the given commit.

如果您在一个分支上(通常应该是),HEAD和这个分支将被移动到提交。

如果您处于分离HEAD状态,git reset只会移动HEAD。要重置分支,请首先检查它。

如果你想了解更多关于git重置和git结账的区别,我建议你阅读git官方博客。

要在Eclipse中执行此操作:

转到“Git存储库探索”透视图。展开“标记”并选择要从中创建分支的提交。右键单击提交并选择“创建分支”。提供分支名称。

它将为您创建一个本地分支。然后,每当您推送更改时,您的分支将被推送到远程服务器。