如果您忘记创建新的Git功能分支怎么办?

时间:2018-10-10 16:54:40

标签: git

我有三个服务器,分别是开发,暂存和生产。我总是有三个对应的Git分支:dev,staging和master。最近,我创建了一个新的功能分支并将其推向生产。然后昨天我开始研究另一个新功能,但忘记删除旧的“新功能”分支,而在一个新的功能分支中开始这项新工作。结果,我的新工作在实现以前功能的同一分支中完成。在我看来,这是“不洁的”。我希望在新功能分支中进行新工作。将这项新作品移至新功能分支的首选Git流程是什么?

这是我的工作流程:

  1. 我从我的dev,staging和master分支开始,它们都是相同的。然后,我创建一个新的功能分支:

    git checkout -b new-feature dev
    
  2. 一旦构建了新功能,就将其合并到我的登台分支中,将更新的代码推送到我的登台服务器并在其中进行测试。

  3. 如果所有测试都通过,则将新功能分支合并到我的dev分支中。

  4. 然后我将dev分支合并到master分支,并将该master分支推送到生产服务器。

这时,所有四个分支都是相同的,我通常会删除new-feature分支,并从dev中签出一个较新的new-feature分支。但是我忘了这么做。

将更改后的文件移动到新的新功能分支的首选方法吗?

    git checkout -b newer-new-feature older-new-feature
    git push origin --delete older-new-feature
    git br --delete older-new-feature

顺便说一句,我确实希望将历史记录保留在较新功能分支中。

3 个答案:

答案 0 :(得分:1)

最简单的方法是从主分支(或要用作功能的基础)开始一个新分支,然后选择“在错误的分支上”所做的修订。然后,您可以将另一个功能分支设置到应该放置的位置(因为它随新功能的提交一起移动,对吗?)。假设您是新功能使用的3个修订版本:

This-string
contains
some-hyphens

希望它能起作用!

答案 1 :(得分:0)

将您的更改重新添加到新功能分支中:

git checkout -b feature-new feature-old
git rebase --onto production <branch-point>

使用gitk来获取<branch-point>(您是从那时开始实现新功能的。)

答案 2 :(得分:0)

  

这时,所有四个分支都是相同的,我通常会删除new-feature分支,并从dev中签出一个较新的new-feature分支。但是我忘了这么做。

Git并不关心分支的名称,它们只是指向提交的指针。假设引用的语句是正确的,那么您的方法是完全正确的。