从另一个分支在 git 中创建分支的各种方法:
这个答案增加了一些额外的见解,现有答案中尚未出现,仅关于问题本身的标题(在 Git 中从另一个分支创建一个分支),但没有解决已经有足够答案的问题的更狭窄的细节这里。
我之所以添加这个,是因为我现在真的需要知道如何在下面执行#1(从我没有签出的分支创建一个新分支),而且如何做到这一点并不明显,谷歌搜索导致到这里作为热门搜索结果。所以,我将在这里分享我的发现。如果有的话,这里的任何其他答案都没有很好地涉及到这一点。
在此过程中,我还将在git branch
下面添加我在常规工作流程中使用的其他最常用命令。
1. 要从您尚未签出的分支创建新分支:
branch2
在您签出branch1
任何分支时创建(例如:假设您已master
签出):
git branch branch2 branch1
一般格式为:
git branch <new_branch> [from_branch]
man git branch
如下所示。我叫<new_branch>
什么叫他们叫<branchname>
什么,我叫什么叫什么叫[from_branch]
什么[<start-point>]
:
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
2. 要从您已签出的分支创建新分支:
git branch new_branch
这对于在变基、压缩、硬重置等之前进行备份非常有用——在做任何可能严重破坏你的分支的事情之前。
例如:我在feature_branch1
,我即将使用git rebase -i master
. 如果我想“撤消”这个,让我们先备份这个分支!我一直在做这一切...THE...TIME并发现它非常有帮助和令人欣慰的是,知道我总是可以轻松地回到这个备份分支并重新分支它以防万一我feature_branch1
在这个过程中搞砸了:
git branch feature_branch1_BAK_20200814-1320hrs_about_to_squash
该20200814-1320hrs
部分是格式的日期和时间YYYYMMDD-HHMMhrs
,因此将是 2020 年 8 月 14 日的 13:20hrs (1:20pm)。这样我可以轻松找到我的备份分支,直到我确定我准备好了删除它们。如果你不这样做并且你搞砸了,你必须git reflog
在搞砸之前去寻找你的分支,这更加困难,压力更大,更容易出错。
3. 要从您已签出的分支创建并签出新分支:
git checkout -b new_branch
为了清楚那里发生的事情,请知道上面的这个命令等同于这两个单独的命令:
git branch new_branch
git checkout new_branch
4. 要从您尚未签出的分支创建和签出新分支:
git checkout -b new_branch from_branch
为了清楚那里发生的事情,请知道上面的这个命令等同于这三个单独的命令:
git checkout from_branch
git branch new_branch
git checkout new_branch
5.重命名分支
就像在终端中重命名常规文件或文件夹一样,git
认为“重命名”更像是一个 'm'ove 命令,所以你可以git branch -m
用来重命名一个分支。这是一般格式:
git branch -m <old_name> <new_name>
man git branch
显示如下:
git branch (-m | -M) [<oldbranch>] <newbranch>
示例:让我们重命名branch_1
为branch_1.5
:
git branch -m branch_1 branch_1.5
或者,如果您已经branch_1
签出,您可以将当前签出的分支重命名为branch_1.5
:
git branch -m branch_1.5