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


当前回答

使用Sourcetree|最简单的方法。

首先,签出要进行特定提交以创建新分支的分支。然后查看工具栏,选择Repository>Branch。。。快捷方式是Command+Shift+B。然后选择要执行的特定提交。并给出一个新的分支名称,然后创建一个分支!

其他回答

使用GitHub Desktop,显示历史窗格,右键单击所需的提交,然后选择菜单项“从提交创建分支”。

只需运行:

git checkout -b branch-name <commit>

例如:

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

带有参数-b的checkout命令将创建一个新分支,并将您切换到该分支

还没人提到git开关?

您可以执行以下操作:

git checkout<commit hash>

或使用符号引用:

git结帐头~3

然后:

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

如果您不确定要提前从哪个提交分支,可以检查提交并检查其代码(参见源代码、编译、测试)

git checkout <sha1-of-commit>

一旦找到了要从中分支的提交,就可以在提交中(即,不必先返回到主提交),只需按通常的方式创建一个分支:

git checkout -b <branch_name>

转到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官方博客。