如果我有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官方博客。
推荐文章
- Bower: ENOGIT Git未安装或不在PATH中
- Bitbucket上的Git:总是要求密码,即使上传了我的公共SSH密钥
- Git别名-多个命令和参数
- 如何添加一个“打开git-bash这里…”上下文菜单到windows资源管理器?
- 是否可以在Git中只提取一个文件?
- 当我做“git diff”的时候,我怎么能得到一个并排的diff ?
- 在git中如何将提交移动到暂存区?
- 如何缩小。git文件夹
- 如何在本地删除分支?
- 找到包含特定提交的合并提交
- Windows上Git文件的权限
- 如何从一个枝头摘到另一个枝头
- 如何获得在两次Git提交之间更改的所有文件的列表?
- 什么是跟踪分支?
- 如何在不稳定的连接上完成一个大项目的git克隆?