Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git新手,可能把我的存储库搞砸了_Git_Branch - Fatal编程技术网

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

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和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 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,它显然已经发布了,因为其他人正在测试它。这很糟糕。