rev*_*alf 850 git git-workflow git-flow git-branch
我有两个分支:master和dev
我想从dev分支创建一个"功能分支" .
目前在分支开发,我做:
$ git checkout -b myfeature dev
Run Code Online (Sandbox Code Playgroud)
... (一些工作)
$ git commit -am "blablabla"
$ git push origin myfeature
Run Code Online (Sandbox Code Playgroud)
但是,在对我的树枝进行可视化之后,我得到了:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Run Code Online (Sandbox Code Playgroud)
我的意思是分支似乎合并了,我不明白为什么......
我做错了什么?
请问您如何解释我如何从另一个分支分支并推回到功能分支的远程存储库?
所有这些都在分支模型中,就像这里描述的那样.
Abi*_*ern 1233
如果你喜欢你发布的链接中的方法,请看看Git Flow.
这是他为该工作流程创建的一组脚本.
但要回答你的问题:
$ git checkout -b myFeature dev
Run Code Online (Sandbox Code Playgroud)
在dev上创建MyFeature分支.做你的工作然后
$ git commit -am "Your message"
Run Code Online (Sandbox Code Playgroud)
现在将您的更改合并到dev而不需要快进
$ git checkout dev
$ git merge --no-ff myFeature
Run Code Online (Sandbox Code Playgroud)
现在将更改推送到服务器
$ git push origin dev
$ git push origin myFeature
Run Code Online (Sandbox Code Playgroud)
你会看到你想要它.
Pra*_*rge 347
如果要从Git中的任何现有分支创建新分支,只需按照选项操作即可.
首先更改/签出到您要创建新分支的分支.例如,如果您有以下分支,例如:
所以,如果你想创建一个名为新分支"subbranch_of_b1"命名的分支下的"BRANCH1"遵循的步骤:
结帐或更改为"branch1"
git checkout branch1
Run Code Online (Sandbox Code Playgroud)现在,创建名为新分支"subbranch_of_b1"下的"BRANCH1"使用下面的命令.
git checkout -b subbranch_of_b1 branch1
Run Code Online (Sandbox Code Playgroud)
上面的代码将创建一个名为新的分支subbranch_of_b1分支下BRANCH1(请注意,branch1
在上面的命令是不是强制性的,因为头是目前指向它,你可以精确的,如果你是在一个不同的分支,虽然).
现在使用了subbranch_of_b1之后,您可以在本地或远程提交并推送或合并它.
将subbranch_of_b1推送到远程
git push origin subbranch_of_b1
Run Code Online (Sandbox Code Playgroud)
Gna*_*r S 35
创建一个分支
$ git branch branch1
$ git branch branch2
结账分行
git checkout命令切换分支或恢复工作树文件
$ git checkout branchname
重命名分支
$ git branch -m branch1 newbranchname
删除分支
$ git branch -d branch-to-delete
$ git branch -D branch-to-delete
(强制删除而不检查合并状态)创建和切换分支
$ git checkout -b branchname
完全包含的分支
$ git branch --merged
**************************分支差异 [git diff branch1..branch2]************************
多线差异$ git diff master..branch1
$ git diff --color-words branch1..branch2
Sum*_*ade 23
要从本地目录中的另一个分支创建分支,您可以使用以下命令。
git checkout -b <sub-branch> branch
Run Code Online (Sandbox Code Playgroud)
git checkout -b XYZ ABC
Run Code Online (Sandbox Code Playgroud)
Too*_*bel 13
在dev
分支机构同时工作.会发生的情况是,在您的场景中,功能分支从dev分支的尖端向前移动,但dev分支不会更改.绘制成直线更容易,因为它可以被认为是向前运动.你在dev上指向A,然后从那里继续沿着平行路径行进.这两个分支并没有真正分歧.
现在,如果你在dev上进行提交,在合并之前,你将再次从同一个提交开始,A,但是现在功能将转到C并且dev转到B.这将显示你试图可视化的分割,如分支现在已经分道扬..
*-----*Dev-------*Feature
Run Code Online (Sandbox Code Playgroud)
与
/----*DevB
*-----*DevA
\----*FeatureC
Run Code Online (Sandbox Code Playgroud)
Dar*_*hit 10
如果您想从另一个分支创建分支,请按照以下步骤操作:
假设:
BranchExisting
是分支的名称,您需要从中创建一个名为 name 的新分支BranchMyNew
。步骤:
将分支提取到您的本地机器上。
$ git fetch origin BranchExisting : BranchExisting
Run Code Online (Sandbox Code Playgroud)此命令将在您的本地创建一个具有相同分支名称的新分支。
现在,从主分支结帐到新获取的分支
$ git checkout BranchExisting
Run Code Online (Sandbox Code Playgroud)您现在位于 BranchExisting。现在从这个现有分支创建一个新分支。
$ git checkout -b BranchMyNew
Run Code Online (Sandbox Code Playgroud)干得好!
这个答案增加了一些额外的见解,在现有的答案中没有出现,只是关于问题本身的标题(从另一个分支在 Git 中创建一个分支),但没有解决已经有足够答案的问题的更狭窄的细节这里。
我添加这个是因为我现在真的需要知道如何做下面的#1(从我没有签出的分支创建一个新分支),而且如何做并不明显,谷歌搜索导致到这里作为顶部搜索结果。所以,我将在这里分享我的发现。如果有的话,这里的任何其他答案都没有很好地触及这一点。
在此期间,我还将在下面添加我git branch
在常规工作流程中使用的其他最常用命令。
创建branch2
自branch1
当你有任何检出的所有分支(例如:假设你已经master
签出):
git branch branch2 branch1
Run Code Online (Sandbox Code Playgroud)
一般格式为:
git branch <new_branch> [from_branch]
Run Code Online (Sandbox Code Playgroud)
man git branch
如下所示。我叫<new_branch>
他们叫<branchname>
什么,我叫[from_branch]
他们叫什么[<start-point>]
:
Run Code Online (Sandbox Code Playgroud)git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
git branch new_branch
Run Code Online (Sandbox Code Playgroud)
这非常适合在变基、压缩、硬重置等之前进行备份——在做任何可能严重破坏分支的事情之前。
例如:我在feature_branch1
,我即将使用git rebase -i master
. 如果我想“撤消”这个,让我们先备份这个分支!我做这一切...THE...TIME并且发现它超级有用和安慰知道我总是可以很容易地回到这个备份分支并重新分支它以防止我feature_branch1
在这个过程中搞砸了:
git branch feature_branch1_BAK_20200814-1320hrs_about_to_squash
Run Code Online (Sandbox Code Playgroud)
该20200814-1320hrs
部分是格式的日期和时间YYYYMMDD-HHMMhrs
,因此将是 2020 年 8 月 14 日的 13:20 小时(下午 1:20)。这样我就可以轻松找到我的备份分支,直到我确定我准备好了删除它们。如果你不这样做并且你搞砸了,你必须使用git reflog
在搞砸之前去找到你的分支,这要困难得多,压力更大,更容易出错。
git checkout -b new_branch
Run Code Online (Sandbox Code Playgroud)
为了使那里发生的事情一目了然,请知道上面的这个命令等效于这两个单独的命令:
git branch new_branch
git checkout new_branch
Run Code Online (Sandbox Code Playgroud)
就像在终端中重命名常规文件或文件夹一样,git
“重命名”更像是一个 'm'ove 命令,因此您可以git branch -m
用来重命名分支。这是一般格式:
git branch -m <old_name> <new_name>
Run Code Online (Sandbox Code Playgroud)
man git branch
显示如下:
Run Code Online (Sandbox Code Playgroud)git branch (-m | -M) [<oldbranch>] <newbranch>
示例:让我们重命名branch_1
为branch_1.5
:
git branch -m branch_1 branch_1.5
Run Code Online (Sandbox Code Playgroud)
这将从当前分支创建新分支:
git checkout -b your_new_branch_name
Run Code Online (Sandbox Code Playgroud)
如果你想创建现有分支的 new_branch 那么:
git checkout -b your_new_branch_name existing_branch_name
Run Code Online (Sandbox Code Playgroud)
Git 2.23引入git switch
并git restore
划分了git checkout
从git 2.23开始,从现有分支创建一个新分支:
git switch -c my-new-branch
切换到新分支“ my-new-branch”
看看这个 Github博客文章,更详细地解释更改:
Git 2.23为现有的命令集带来了一对新的实验命令:git switch和git restore。这两个是为了最终为众所周知的git checkout提供更好的界面。新命令旨在使每个命令有一个清晰的分隔,整齐地划分出git checkout的许多职责
归档时间: |
|
查看次数: |
986111 次 |
最近记录: |