我克隆了一个存储库并创建了一个分支(branch1
)。
我在那个分支中有一些变化。
现在我想退出此分支,并从master
创建一个新分支。
根据我的理解,我可以使用git branch myBranch
创建一个新的分支,
然后通过git checkout myBranch
切换到分支。
但不会这样做会在现有分支branch1
上创建一个新的分支?
我想退出当前分支(branch1
),然后创建一个新分支并输入它(myBranch
)
我怎么能这样做?
答案 0 :(得分:7)
你可以做一个
git checkout master
。
然后一个
git checkout -b new_branch
git checkout -b foo
之后是git branch foo
和git checkout foo
的缩写形式。
请注意,新分支上仍会存在未提交的更改。如果由于主服务器上的文件在此期间发生了更改而发生任何冲突,您可以使用git stash
存储当前更改,签出新分支并在之后执行git stash apply
。您需要解决新分支上发生的冲突。
答案 1 :(得分:1)
来自git branch manual
文档:
<强>概要强>
git branch [--set-upstream | --track | --no-track] [-l] [-f]&lt; branchname&gt;并[d起点&gt;]
<强>描述强>
命令[...]创建一个名为&lt;的新分支头。 branchname&gt;它指向当前的HEAD,或者&lt;起点&gt;如果给予。
请注意,这将创建新分支,但不会将工作树切换到它;使用&#34; git checkout&#34;切换到新分支。
因此,git branch myBranch master
将从当前master
分支头引用的提交开始创建一个新分支。
要处理新创建的分支,请运行git checkout myBranch
。
这有点git checkout -b myBranch master
的长格式。
有关更详细的说明,请仔细阅读doc git-branch和doc git-checkout
答案 2 :(得分:0)
基本上,要从零枝切换到新分支,零更改,您可以执行以下操作
# to discard not committed changes for ever
git reset --hard HEAD
# In case you don't want to discard change but put them aside for now
git stash --all
# to switch to the new branch which is created and placed on the <commit_reference>
git checkout -b <new_branch_name> <commit_reference>
但是当你说退出分支时,你应该进一步解释你的意思,删除它?或者只是切换到另一个分支。 如果要删除它,则需要在前两个命令之后运行它
git branch -d <branch_you_exited>
答案 3 :(得分:0)
您只能使用一个命令来满足您的要求,即
<强> git checkout -b myBranch commit
强>
该命令的功能是:
1.退出当前分支。
2.从您指定的提交中创建一个新分支myBranch(git branch myBranch
)。
3.将myBranch切换为当前分支(git checkout myBranch
)。
git checkout -b myBranch be42c57
,git从be42c57
创建一个新的分支myBranch并将HEAD指向它。
git checkout -b myBranch master
,git将从master创建一个新的分支myBranch(master上的最新提交id)并将HEAD指向它。