Git新手,可能把我的存储库搞砸了
所以这里是交易,我使用git和Bitbucket作为我的应用程序。我正在使用git流系统来实现git。所以背景是这样的。我有一个发布分支,名为release/v1.0.2,它已经开放了一段时间,我的用户目前正在测试1.0.2。与此同时,beta testing 1.0.2我已经开始在两个新特性上实现,让我们称它们为feature/feature1和feature/feature2 今天我决定我已经完成了feature1和feature2,v1.0.2的beta测试也已经完成。所以我用Atlassian Sourcetree做了这件事: 完成版本v1.0.2意味着将版本/v1.0.2重新设置到开发中,并将版本/v1.0.2合并到主分支中,如果您想知道为什么我要在开发中使用rebase是因为我听说最好使用rebase,请创建一个v1.0.2标记 完成功能特性1将功能/特性1重设到开发中 完成功能特性2将功能/特性2重新基础到开发中 从dev创建一个新版本/v.1.0.3 结果 在版本/v.1.0.3中,有许多文件丢失,并且存在一些本应从功能/特性2中删除的代码。我真的不明白出了什么问题 什么是最简单的方法来恢复我所做的事情并重新尝试。但是这一次我希望能从一开始就把它做好,考虑到我第一次做的事情没有成功,我该怎么做呢 编辑 似乎当我试图完成feature2时,它没有将其合并到开发中。罪魁祸首可能是当我试图完成feature2发行版时,它有一些必须手动解决的冲突吗?至少在完成功能2后,我可以从日志中读出以下内容: ab3473c HEAD@{5}:签出:从功能/特性2移动到开发 2f83ac7 HEAD@{6}:重新基础完成:返回到refs/heads/feature/feature2 2f83ac7 HEAD@{7}:重基:更新默认图像 如果在完成功能1后查看日志,它似乎已将其正确地合并到开发中: 05bf843头@{53}:签出:从开发转移到功能/特性2 ab3473c头@{54}:合并功能/特性1:快进 bf8bdda HEAD@{55}:签出:从功能/特性1移动到开发您使用的是重基,而不是合并。Rebase重写历史,这不是你想要的。Rebase对于您已经推动的分支尤其糟糕。希望您没有将此混乱推送到BitBucket,但在创建此混乱之前,您已经将所有内容推送到BitBucket。在这种情况下:Git新手,可能把我的存储库搞砸了,git,branch,Git,Branch,所以这里是交易,我使用git和Bitbucket作为我的应用程序。我正在使用git流系统来实现git。所以背景是这样的。我有一个发布分支,名为release/v1.0.2,它已经开放了一段时间,我的用户目前正在测试1.0.2。与此同时,beta testing 1.0.2我已经开始在两个新特性上实现,让我们称它们为feature/feature1和feature/feature2 今天我决定我已经完成了feature1和feature2,v1.0.2的beta测试也已经完成。所以我用Atlass
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
在您重新设置了两个功能的基础之后,您是否将每个功能合并到了dev中?这应该只是一个快进merge@JohnnyZ它可能没有将feature2合并到dev中,请看我的编辑…你能粘贴你的分支在SourceTree中的屏幕截图吗?带有漂亮线条的图形如果有冲突,它应该在某个地方显示错误消息Finish在重新基址期间由于冲突而中止。为什么重新基址不好?根据这个答案,我应该使用rebase…rebase在一个严格私有的功能分支上很好,你想让它与上游同步。好吧,实际上我是这个应用程序的唯一开发者,所以也许它还不那么糟糕?你提到了一个发布分支的rebase,它显然已经发布了,因为其他人正在测试它。这很糟糕。