如果我有N个提交,我如何从N-3个提交分支?
当前回答
你可以在斯塔什做。
单击提交在屏幕右上方单击“标记此提交”然后,您可以从刚刚创建的标记创建新分支。
其他回答
一个很好的相关问题是:你怎么用git的--help选项来解决这个问题?让我们试试看:
git branch --help
我们看到这样的输出:
NAME
git-branch - List, create, or delete branches
SYNOPSIS
git branch [--color[=<when>] | --no-color] [-r | -a]
[--list] [-v [--abbrev=<length> | --no-abbrev]]
[--column[=<options>] | --no-column]
[(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
[--points-at <object>] [<pattern>...]
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>...
git branch --edit-description [<branchname>]
Gobbledegook。
在随后的文本中搜索单词“commit”。我们发现:
<start-point>
The new branch head will point to this commit. It may be given as a branch name, a
commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.
我们正在前进!
现在,关注这一行官样文章:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
将其概括为:
git branch <branchname> [<start-point>]
完成了。
转到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官方博客。
这是我所做的:
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是属于主分支的旧提交。
使用源树[当前使用的版本:3.1.3]
在源树中打开历史记录
它将在主窗口中列出所有提交右键单击所需的提交,然后单击分支。。。选项在新窗口中为分支指定名称,然后单击“创建分支”。新的分支(系统本地)将与其他现有分支一起出现在左侧,您可以将其推到源位置以将其放到存储库中,这样其他用户就可以使用它。
只需运行:
git checkout -b branch-name <commit>
例如:
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
带有参数-b的checkout命令将创建一个新分支,并将您切换到该分支
推荐文章
- 如何从远程Git存储库中提取并覆盖本地存储库中的更改?
- Github:导入上游分支到fork
- Mercurial:我可以重命名分支吗?
- Git单次修订的日志
- Git在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”