如何正确创建分支 GIT

Posted

技术标签:

【中文标题】如何正确创建分支 GIT【英文标题】:How to create branches correctly GIT 【发布时间】:2021-09-16 00:47:39 【问题描述】:

我希望我的“设置”分支成为develop-分支的子分支。

我们总是从“主”分支开始。

所以我创建了一个新的develop-branch

git checkout -b develop main  
git commit -m "created develop" 
git push 

但它不允许我简单地推动,GIT 说我需要写

git push --set-upstream origin develop  

第一个问题:这是否意味着起源 - 是我们的主要,我们从主要创造“发展”?

所以当我使用时:

git push --set-upstream origin develop
git checkout -b "setting"  

我是从开发中创建此设置吗? 或者我再次从 main 创建它???)以及我需要使用什么命令成为 develop 的父 settings

如何使一个分支成为另一个分支的父级。 --set-upstream origin 有什么作用?

【问题讨论】:

你为什么“提交”你的分支创建?这里没有什么可提交的,分支是对存储在 repo 本身中的提交的引用,而不是在提交中。 因为当我不“提交”时,它不会全局创建,只会在我的计算机上本地创建,所以当我从“设置”推送更改时 - 开发不会创建。如果你现在如何使它正确 - 请告诉我。 您自己通过git checkout -b develop main 回答了您的第一个问题。对于第二个问题,请查看this answer。另外,git help checkout等也有很多信息。 谢谢你们,我明白了。还有一个问题 - 是否可以重命名“主”分支而不删除它的子分支? @denmaccormik 是的,分支完全相互独立。 “父”概念纯粹是合乎逻辑的,回购本身中没有任何东西以任何方式将分支“链接”在一起。 【参考方案1】:

我认为这里的主要误解是关于分支是什么。也许您过去使用过不同的版本控制系统,或者您的脑海中形成了不完整的画面。

在 git 中,分支只是一个指向一组提交的标签。更严格地说,它指向单个提交,即分支的“尖端”;然后该提交指向其父级或父级,并且可以向后构造历史。在“分支”上创建一个新的提交包括首先在内部创建提交,然后移动分支指针指向该提交。

由此得出以下几点:

分支之间没有任何关系。在您创建分支 A 时,它可能指向与分支 B 相同的提交,但后来两者都转向了不同的“提示”。 git 中没有关于 A 或 B 是“原始”分支还是“父”分支的记录。 创建分支不需要涉及任何新的提交。您只是在创建一个指向特定提交的新指针,然后您将通过进行新提交(或使用其他特定命令)来移动它。

另一个重要的事情是要了解本地计算机上的分支指针和远程服务器(如 Github 或 Gitlab)上具有相同名称的指针可以独立移动。最简单的是,如果您从互联网上拔下您的计算机,您可以继续创建提交和全新的分支。当你再次连接时,你可以使用一种叫做“远程”的东西来同步它们;默认遥控器称为“原点”

考虑到这一点,我们可以解释几个命令:

git checkout -b develop main  

这将创建一个名为“develop”的新分支指针,最初指向与“main”相同的位置,然后创建我们当前签出的分支(新提交将添加到其中)。 “开发”和“主要”之间没有持续的关系;他们只是碰巧现在指向同一个提交。

git push --set-upstream origin develop

这与配置了名称“origin”的远程服务器通信,并告诉它您的新分支指针“develop”。 “--set-upstream”只是为了方便:它将“origin”设置为该分支的默认远程,因此您可以运行“push”和“pull”命令,而无需每次都输入“origin”。

【讨论】:

【参考方案2】:

如果您创建和签出分支,为什么要推送?您只能推送文件更改,但不能推送分支...

如果你想创建分支settings,你可以简单地执行以下,如果你留在那个分支,你想创建settings(在你的情况下分支develop->git checkout develop到切换到develop):

git checkout -b settings

如果您不在develop 分支中,您可以使用以下方法执行此操作:

git checkout -b <new branch> <destination branch>

在你的情况下:

git checkout settings develop

通过以下操作,您也可以远程创建分支:

git push <remote-name> <branch-name> 

现在您可以更改文件并将更改的文件推送到远程分支settings

【讨论】:

以上是关于如何正确创建分支 GIT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Git 中更改分支库?

我如何合并从dev到开始然后生产的git分支

Git 在团队中的最佳实践--如何正确使用Git Flow

Git 在团队中的最佳实践--如何正确使用Git Flow

如何重命名本地git和GitHub中拼写错误的分支[重复]

Git提交代码的正确姿势