use*_*076 -3 git branch github branching-and-merging
嗨,我有两个并行的“dev”和“prod”分支,我想将另一个本地分支添加到名为“issue22”的本地开发分支(GitPro 将此称为主题分支 - 其他人称之为功能分支)。所以在终端我创建了我的功能/主题分支
git checkout -b issue22 dev
Run Code Online (Sandbox Code Playgroud)
我认为这会“创建一个名为 issue22 的分支”,并从 dev 分支中的相同源代码开始。我期待看到
prod
dev
dev/issue22
Run Code Online (Sandbox Code Playgroud)
但是当我发送命令 git branch -a
相反,我看到
prod
dev
issue22
remotes/origin/head -> origin/master
remotes/origin/dev
remotes/origin/prod
Run Code Online (Sandbox Code Playgroud)
我应该使用什么命令来创建一个新分支,以便“issue22”看起来像一个与“dev”分支并行运行的主题/功能分支,并且似乎也源于 dev 分支?
非常感谢
提交之间的父级关系赋予存储库其“结构”。使用 Git 绝对可以实现像Git Flow 网站上显示的那样的可视化。它是围绕Git设计的!
这是一个应该可以帮助您入门的示例:
首先,创建一个新的存储库并添加一个空提交:
$ mkdir test-repo && cd test-repo
$ git init
$ git commit --allow-empty -m "Initial empty commit"
Run Code Online (Sandbox Code Playgroud)
在这一点上,你有一个分支和一个提交。你的网络看起来像
[master] A
Run Code Online (Sandbox Code Playgroud)
此处,A代表 Git-Flow 站点最右上角的蓝点。
此提交在图中缺少其标记。让我们添加它:
$ git tag -a 0.1
Run Code Online (Sandbox Code Playgroud)
现在我们有
[master] [0.1] A
Run Code Online (Sandbox Code Playgroud)现在我们将创建我们的develop分支:
$ git checkout -b develop
Run Code Online (Sandbox Code Playgroud)
此时,我们还没有添加任何develop不在 in 中的提交master,因此分支指向完全相同的提交:
[master] [develop] [0.1] A
Run Code Online (Sandbox Code Playgroud)这里变得有点拥挤。让我们再添加一些提交develop:
$ # Hack, hack, hack...
$ git add somefile.txt otherfile.dat
$ git commit
$ # Hack, hack, hack...
$ git add foo.bar
$ git commit
Run Code Online (Sandbox Code Playgroud)
现在我们的网络更有趣了。当我们创建这两个新提交中的每一个时,我们的develop分支被更新以依次指向它们中的每一个。现在我们有
[master] [0.1] A
\
[develop] B---C
Run Code Online (Sandbox Code Playgroud)
develop实际上此时指向 commit C,我们可以追溯到Ccommit 的祖先A。
我们可以对 new branch 做同样的事情issue22,尽管它不会被命名,develop/issue22除非我们明确地调用它:
$ git checkout -b issue22
$ # Hack, hack, hack...
$ git add foo.bar
$ git commit
Run Code Online (Sandbox Code Playgroud)
现在我们有了
[master] [0.1] A
\
[develop] B---C
\
[issue22] D
Run Code Online (Sandbox Code Playgroud)
issue22develop 凭借D其父存在的C分支。我们可以做两个更多的工作develop和issue22
[master] [0.1] A
\
[develop] B---C---F---G
\
[issue22] D---E---H
Run Code Online (Sandbox Code Playgroud)
不改变这种关系。然后我们可以合并issue22回develop(或直接合并到master,尽管这不是“Git-Flow 方式”)并得到类似的东西
[master] [0.1] A
\
[develop] B---C---F---G---I
\ /
[issue22] D---E---H
Run Code Online (Sandbox Code Playgroud)这个模型可以扩展到任意数量的分支,只要稍加注意,您就可以准确地重现 Git-Flow 图。分支在包含不同的提交之前不会“发散”。
稍微了解一下 Git 的内部工作原理可能会对您有所帮助。网站Think like (a) Git是一个很好的介绍。
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |