git 从特定的分支历史记录创建新分支并提交

iDe*_*247 3 git version-control

我基本上想做:

git checkout branchA
git checkout -b branchB <commit_id>
Run Code Online (Sandbox Code Playgroud)

branchB<commit_id>on创建新分支branchA

题:

我在这里详细介绍,但我问的原因是为了帮助理解 git history 的工作原理并节省一些输入。(上面的命令可能是四个命令而不是两个......)我如何使用本机 git 函数将它变为一个?题:

是否有一种更简单/单行的方式来做与上面相同的事情?

我正在考虑简单地做,git checkout -b branchB <commit_id>但如果我在branchC那里可能不会工作,因为日志/历史branchC可能与branchA.

背景:

我对这种特定情况的意图是快速恢复到先前的提交,以防将错误引入生产。然而,我仍然想保留我的新代码,然后丢弃旧代码被推回服务器的新分支。

Kin*_*nch 5

只是

git checkout -b branchB <commit>
Run Code Online (Sandbox Code Playgroud)

提交的哈希值在整个仓库中是唯一的,因此没有理由更改为branchA之前,因为结果完全相同。

这也只是一个捷径

git checkout <commit>
git branch branchB
git checkout branchB
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,第一个命令是正常的结帐,git checkout branchA无论如何它都会取代您的。

我正在考虑简单地做,git checkout -b branchB <commit_id>但是如果我在 branchC 中,那可能无法工作,因为 branchC 的日志/历史记录可能与 branchA 不同。

一个存储库中只有一个历史记录。

我对这种特定情况的意图是快速恢复到先前的提交,以防将错误引入生产。然而,我仍然想保留我的新代码,然后丢弃旧代码被推回服务器的新分支。

听起来像标签;)

git tag -a -m "Release 1.2.3" v1.2.3
# Deploy 1.2.3
#something broken!
git checkout v1.2.2
# Deploy 1.2.2
Run Code Online (Sandbox Code Playgroud)