如何正确创建分支GIT

How to create branches correctly GIT

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

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

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

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

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

git push --set-upstream origin develop  

第一个问题:这是否意味着 origin - 是我们的 main 并且我们从 main 创建“develop”?

所以当我使用时:

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

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

develop 父级

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

Why you want to push if you create and checkout a branch? You can only push file-changes, but not branches...

如果你想创建分支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中,分支只是指向一组提交的标签。更严格地说,它指向单个提交,即分支的“尖端”;该提交然后指向其父或多个父级,并且可以构建历史向后。 “在分支上”创建新提交在内部包括首先创建提交,然后将分支指针移动到指向该提交。

由此可得出以下几点:

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

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

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

git checkout -b develop main  

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

git push --set-upstream origin develop

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