如何将新分支添加到现有GitHub存储库作为主要分支?

时间:2017-03-11 14:38:34

标签: git github

我在一个月前为我的项目创建了GitHub存储库,并将我以前的所有实现都推送到我的github存储库中。但是,现在我想出了一个新的实现,它比以前的版本更稳定,更新的解决方案更高效。我的目标是,我希望将我之前的实现保留在我的项目存储库中,同时,我打算在我的github repo上引入标记为major分支的新分支,同时将之前的实现标记为default。我怎样才能以安全的方式实现这一目标?我不想丢失以前的工作,我想确保新引入的分支可以作为major分支处于活动状态,同时取消激活default分支以保存以前的工作。我怎样才能做到这一点?谁能指导我如何处理细节工作流程?在此先感谢:)

修改

为了澄清一点,我没有将我的新实现推送到github repo。我想重新打开包含新实现的分支新分支,这个新分支将转发到在线包构建服务器。还有什么进一步的帮助吗?

1 个答案:

答案 0 :(得分:2)

  

我不想失去以前的工作,我想确保新引入的分支可以作为主要分支活动

您可以在项目实施中关注semantic versioning。只需在您之前实施的最新提交上提供标记(例如v1.0.0)。然后使用默认分支主机合并您的更新/最新更改。

现在,如果您想要退回/获取以前的版本,请查看标记v1.0.0

  1. 添加提交您对分支的最新更改(例如feature)。因此,您的feature分支包含所有最新更改。

    $ git checkout -b feature
    $ git add .
    $ git commit -m 'new implementation'
    $ git push origin HEAD                 # push to remote 'feature' branch
    
  2. 现在结帐master分支,并在之前的实现提交的顶部提供标记

    $ git checkout master
    $ git tag -a v1.0.0 -m "my previous implementation"
    $ git push --tags                   # push v1.0.0 tag to remote
    
    $ git checkout -b prev-impl-v1.0.0  # create a new branch ('prev-impl-v1.0.0') from the tag 'v1.0.0' which holds your previous implementation
    $ git push origin HEAD              # push 'prev-impl-v1.0.0' branch 
    
  3. 现在将更新的更改(存在于feature分支中)合并到默认分支master中。将feature分支合并到master分支。如果您已完成更新的实现,那么在新实现的提交的顶部提供new tag

    $ git checkout master             # checkout master branch
    $ git pull origin feature         # merge feature with master
    
    $ git tag -a v2.0.0               # give a new tag ('v2.0.0') on the new implementation
    
    $ git push origin HEAD            # update the remote 'master'
    $ git push --tags                 # push 'v2.0.0' tag to remote
    
    $ git checkout -b new-impl-v2.0.0 # create a new branch from tag 'v2.0.0' tag
    $ git push origin HEAD            # push 'new-impl-v2.0.0' branch 
    
  4. 现在,您的master已根据您的最新更改进行了更新。你也有不同的分支,如:

    master = new-impl-v2.0.0 =拥有新的impl。 (v2.0.0标签)
    prev-impl-v1.0.0 =保留之前的impl。 (v1.0.0标签)

    现在,您可以从feature2创建一个新分支(例如,master)并在该分支上工作以进行下一次实施(如有必要)

    $ git checkout master
    $ git checkout -b `feature2`
    
    # do changes for your next implementation
    

    当您完成下一次实施时重复#3 ,就像您对feature分支一样。

    如果您想以checkout to the specific tag的方式支持以前的实施。您还有两个分支(prev-impl-v1.0.0& new-impl-v2.0.0),您可以在其中结帐以查看之前的任何实施。

     $ git checkout v1.0.0           # checkout to v1.0.0 = previous implementation
     $ git checkout v2.0.0           # checkout to v2.0.0 = new implementation 
    
     # create a new branch from any checked out tag/commit
     $ git checkout -b <branch-name> # create & checkout a new branch from the tag
    

    More about Semantic Versioning