如果我有N个提交,我如何从N-3个提交分支?
当前回答
如果您不确定要提前从哪个提交分支,可以检查提交并检查其代码(参见源代码、编译、测试)
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官方博客。
要在github.com上执行此操作:
转到您的项目。单击“提交”。单击要从中分支的提交上的<>(“浏览历史记录中此时的存储库”)。单击左上方的“树:xxxxxx”。就在语言统计栏下方,您将看到“查找或创建分支”选项(只需在那里键入新的分支名称)
使用提交哈希创建分支:
git branch branch_name <commit-hash>
或使用符号引用:
git branch branch_name HEAD~3
要在创建分支时签出分支,请使用:
git checkout -b branch_name <commit-hash or HEAD~3>
如果您正在寻找基于命令行的解决方案,可以忽略我的答案。我建议你使用GitKraken。这是一个非凡的git UI客户端。它在主页上显示Git树。你可以看看他们,知道项目的进展。只需选择一个特定的提交,右键单击它并选择“在此处创建分支”选项。它将提供一个文本框,用于输入分支名称。输入分支名称,选择“确定”,即可设置。它真的很容易使用。
还没人提到git开关?
您可以执行以下操作:
git checkout<commit hash>
或使用符号引用:
git结帐头~3
然后:
git开关-c我的新功能分支
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式