Git新手,可能搞砸了我的存储库

时间:2013-09-16 13:30:02

标签: git branch

所以这是交易,我正在使用git和Bitbucket作为我的应用程序。我正在使用git-flow系统进行git。所以背景是这样的。我有一个名为release/v1.0.2的发布分支已经开放了一段时间(我的用户目前正在测试1.0.2)。同时beta测试1.0.2我已经开始实现两个新功能,让我们称他们为feature/feature1feature/feature2

今天我决定使用feature1和feature2完成,并且v1.0.2的beta测试也已完成。所以我做的就是这个(使用Atlassian Sourcetree):

  1. 完成发布v1.0.2(意味着将release/v1.0.2重新绑定到dev并将release/v1.0.2合并到master分支,并创建一个v1.0.2标记)如果你我想知道为什么我使用rebase进入dev是因为我听说最好使用rebase。

  2. 完成要素功能1(将feature/feature1变为dev

  3. 完成要素功能2(将feature/feature2变为dev

  4. release/v.1.0.3创建新版本(dev)。

  5. 结果

    release/v.1.0.3中,有大量文件丢失,并且存在一些应该从feature/feature2中删除的代码。我真的不明白出了什么问题。

    恢复我所做的最简单的方法是什么,再给它一次。但是这次希望从一开始就正确地完成它(考虑到我第一次没做的事情,我怎么做呢)...

    修改

    似乎当我尝试完成feature2时,它没有将其合并到dev。罪魁祸首是,当我试图完成feature2发布时,它有一些必须手动解决的冲突?至少在feature2完成后我可以从这个日志中读出:

    ab3473c HEAD @ {5}:checkout:从feature / feature2转移到develop 2f83ac7 HEAD @ {6}:rebase完成:返回refs / heads / feature / feature2 2f83ac7 HEAD @ {7}:rebase:更新默认图像

    如果在feature1完成后查看日志,它似乎已将其正确合并到dev中:

    05bf843 HEAD @ {53}:checkout:从开发转移到feature / feature2 ab3473c HEAD @ {54}:合并功能/功能1:快进 bf8bdda HEAD @ {55}:checkout:从feature / feature1移动到开发

1 个答案:

答案 0 :(得分:0)

您正在使用rebase而不是合并。 Rebase重写历史,这不是你想要的。 Rebase特别是 bad ,你已经推出了分支。希望你没有把这个烂摊子推到BitBucket,但你已经把所有东西都推到了BitBucket 之前创造了这个烂摊子。在那种情况下:

git fetch  # assuming remote origin points to BitBucket
git checkout feature/feature1
git reset --hard origin/feature/feature1
git checkout feature/feature2
git reset --hard origin/feature/feature2
git checkout release/v1.0.2
git reset --hard origin/release/v1.0.2

现在恢复了混乱状态。 在master上创建v1.0.2发行版。

git checkout master
git merge release/v1.0.2
git tag v1.0.2
git push origin master
git push --tags origin

将新功能分支和v1.0.2修复程序合并到dev,并从dev启动新的v1.0.3 RC分支:

git checkout dev
git merge feature/feature1
git merge feature/feature2
git merge release/v1.0.2
git checkout -b release/v1.0.3