如何从某个分支创建不同的分支

时间:2013-01-14 17:41:09

标签: git

我刚刚创建了指向origin/master的默认存储库 我想创建一个release和一个production分支

我应该从origin / master本身创建一个git分支

e.g。 git branch releasegit branch production

我应该从origin / release

创建origin / production吗?
git branch release
git push origin release

git checkout release
git branch production

首选方法是什么

3 个答案:

答案 0 :(得分:2)

我认为你在这里混淆了这些概念。

创建新分支的哪个分支无关紧要,最重要的一点是您希望从哪个分支开始。

git中的分支和标签只是指向特定提交的指针(具有以DAG表示的历史记录)。不同之处在于标签通常会在时间上保持静态,而分支通常会随着编码的进展而变化。

基本上,当您在历史记录中获得第一个版本时,请创建指向该提交的release分支。 (我建议也标记它。)

我不确定你想要实现什么,可能你真的不需要分支,标签就足够了。我建议您在对存储库做出这些决定之前阅读pro git book以更熟悉分支(pro git's "Tagging" chapter)和标记(pro git's "What a Branch Is" chapter)的概念。

答案 1 :(得分:2)

在你的情况下,没关系。分支引用(本地或远程)只是:引用到提交。做

git checkout master
git branch release
git branch production

git checkout master
git branch release
git checkout release
git branch production

完全等效,因为最后它们都只是对同一提交的引用(您可以通过对每个分支名称运行git rev-parse并比较结果来验证这一点)。 Git没有记录分支创建的分支,而只知道它们之间最近的常见提交是什么。

答案 2 :(得分:0)

remotes/origin/...分支是远程跟踪分支。您不应该直接操作它们,它们服务器跟踪远程存储库的分支。 (例如,当您git fetch <remote-repo-name>时,它们会得到更新。)

要回答您的问题,您应该从本地主服务器创建发布和生产分支(因此我假设当前分支是主服务器):

git checkout -b release
<do some work>
git add .
git commit -m <commit message>
git push -u origin release

git checkout -b创建一个新分支并在一条指令中切换到它。 git push -u推送到远程和分支并添加上游引用,因此当您拉动并推送到该分支时,您不再需要定义它们。

相同的工作流程适用于生产分支(虽然主要通常被视为生产就绪)