如何从旧提交创建新的 Git 分支? [复制]

Posted

技术标签:

【中文标题】如何从旧提交创建新的 Git 分支? [复制]【英文标题】:How do I create a new Git branch from an old commit? [duplicate] 【发布时间】:2011-11-02 07:36:37 【问题描述】:

可能重复/最近/不太清楚的问题 Branch from a previous commit using Git

我有一个名为 jzbranch 的 Git 分支,并且有一个旧的提交 ID:a9c146a09505837ec03b

如何根据上面列出的信息创建一个新分支justin

【问题讨论】:

这不是重复的 - 另一个问题涉及从特定 NUMBER 次提交中检索,而此问题使用 COMMIT ID。 使用当前提交创建新分支,然后签出回原始分支,然后恢复到旧提交 【参考方案1】:
git checkout -b NEW_BRANCH_NAME COMMIT_ID

这将创建一个名为“NEW_BRANCH_NAME”的新分支并检查它。

("check out" 表示"切换到分支")

git branch NEW_BRANCH_NAME COMMIT_ID

这只是创建新分支而不检查它。


in the comments many people seem to prefer doing this in two steps。以下是分两步执行此操作的方法:

git checkout COMMIT_ID
# you are now in the "detached head" state
git checkout -b NEW_BRANCH_NAME

【讨论】:

值得注意的是,如果您使用git checkout <SHA1> 签出提交(因此您处于分离 HEAD),您可以创建一个分支在该提交中,只需使用 git branch <branchname>git checkout -b <branchname>(同一提交不需要 SHA1 参数)。 只是想我会补充一点,当你不小心丢弃了一个存储时,这种技术也有效。 如果你正在创建一个新分支供其他人使用,但还没有任何提交,你可以推送:git push --set-upstream origin justin “检查”是什么意思?? @mesqueeb 我想这意味着切换到分支。第一个命令创建一个新分支并直接切换到它。第二个创建一个新分支而不直接切换到它,所以你仍然在旧分支上。

以上是关于如何从旧提交创建新的 Git 分支? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 GIT 如何将不同提交中的文件签出到新分支中? [复制]

Git 如何从特定的提交中创建一个新的分支

Git 如何从特定的提交中创建一个新的分支

从旧的 Git 提交中删除私有信息

如何查看新的 git 分支将推送哪些 git 提交?

如何从 Git 主分支中间删除一些提交? [复制]