如何强制git始终从master分支?

时间:2019-12-12 12:05:57

标签: git

我不小心从我上次工作的功能分支分支,而不是从master分支。这引起了历史上的混乱。

我想:

  • 除master以外的所有分支的分支分支
  • 使master成为默认分支以从中创建新分支,即在此处将其设置为默认分支:

    git branch [<oldbranch>] <newbranch>
    

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

我将配置一个Git别名来完成此操作。

git config alias.braster "checkout master -b"

要使用它,请键入(与分支母版中的其他类似):

git braster feature1

答案 1 :(得分:4)

使用外部git工具时,覆盖git的默认操作可能会导致某些意外结果。

我建议为此创建一个别名。

将以下行添加到您的.bashrc文件中:

alias gb="git checkout master; git checkout -b"

或运行以下命令:

echo alias gb="git checkout master; git checkout -b" >> ~/.bashrc

答案 2 :(得分:0)

分支没有拥有源分支。它们只是标签,指向提交。 (另请参见What exactly do we mean by "branch"?),真正重要的是提交:Git存储库与提交有关。分支名称对我们的作用是让他们 find 提交,它们的真实姓名(其哈希ID)似乎是随机的,而且没有人记得。

更具体地说,分支名称只是人类可读的位置,您的Git在其中存储了一次提交的原始哈希ID,还有另一个特殊功能:如果您运行git checkout <name>, Git不仅会检查一个特定的提交,还会 记住该名称作为您的当前分支 1 无论您的 current 分支名称是什么,当您进行 new 提交时,您刚刚进行的新提交的原始哈希ID都会被塞入该分支的名称中。

结果是,如果您这样创建新的分支名称branch9

git branch branch9 a123456

然后,名称branch9现在指向其哈希ID为a123456的现有提交。 git branch命令将使用任何内容,这些内容都可以转换为原始提交哈希ID。使用:

git branch branch9 master

master转换为哈希ID(通过读出存储在名称master中的哈希ID),并使用它来设置新名称branch9来保存相同哈希ID。

除了将源克隆到Git并对其进行更改并构建自己的版本外,无法更改git branch将在此处接受的语法或选项。 git checkout -bgit checkout -Bgit reset也是一样,所有这些都可以创建新分支或将原始哈希ID强制为分支名称。

您最好的选择是像Rickard Körkkö's answergkpin3's answer中那样设置自己的别名(shell / CLI别名或Git别名)。


1 分支名称还有其他特殊功能,没有一个像origin/master这样适用于远程跟踪名称的功能,但是这个特殊功能-一个无论如何,与Git称为分离的HEAD 相比,Git有效地称为附加的HEAD ,这是迄今为止最重要的。