最近,我将应用程序从Bitbucket和签出克隆到一个新的upgrading分支,在该分支中,我将应用程序从rails 5.0.0.1升级到rails 5.1.6:
$ git checkout -b upgrading我首先更新了我的Gemfile,我运行了包更新:
$ bundle update从栏杆网站和为此目的创建的新rails 5.1.6应用程序中,我编辑了我的旧应用程序添加或删除代码以及删除或创建文件,并编辑了指定要继承的类的版本的迁移文件。然后在运行rails app:update之前,我使用git提交了我的应用程序。
$ git add -A
$ git commit -m 'before rails app update'
$ rails app:update几乎没有什么需要修改的地方,然后我重新设置数据库并运行我的整个测试套件:
$ rails db:migrate:reset
$ rails test我播种了数据库,启动了服务器,并对应用程序进行了图形化测试。一切都很好。最后,我做了一个提交,切换到主分支,南瓜合并了升级分支,最后做了最后一次提交:
$ git add -A
$ git commit -m "work in progress"
$ git checkout master
$ git merge --squash upgrading
$ git commit -m "upgrade to Rails 5.1.6"
$ git push除了我尝试删除upgrading分支时,一切都很好,因为操作失败了:
$ git branch -d upgrading
error: The branch 'upgrading' is not fully merged.
If you are sure you want to delete it, run 'git branch -D upgrading'.我只知道很少的基本命令,所以我不知道为什么会发生这种情况。我很感谢你的帮助。
发布于 2019-03-31 18:20:13
问题是,您将upgrading分支与--squash合并为master。压缩upgrading分支上的提交将为提交留下一个新的sha。由于这个新的sha,git无法检测到此分支是否已与主服务器合并,并且认为它没有合并。与其压缩合并,不如将upgrading分支重新定位为所有1提交,然后将其合并到没有南瓜的主服务器上。
这将导致一个单独的提交仍然合并到master,但git会意识到,由于分支的sha实际上在主服务器的历史中,分支确实被合并了,而且在尝试删除upgrading分支时,它不会有问题。
如果您100%确信Master确实有来自upgrading分支的更改,那么只需使用git branch -D upgrading告诉git您确实想要删除该分支。
如果您希望在合并之前将您的upgrading分支与主分支同步,并将提交压缩为进程中的提交,则可以这样做:
git rebase -i master然后你可以选择你想要的提交。您可以压缩,挑选,修复等。这将留给您一个整洁的upgrading分支,可以合并成主人没有问题。
发布于 2019-03-31 15:20:51
如果可以的话,不用太担心。
git branch -d是“害羞”的删除模式,对于任何可能丢失的东西都非常谨慎。使用您描述的操作,不会丢失任何工作,因为分支的所有提交现在都在您的master上(即使它们被压缩了)。
尽管如此,分支并不是一个很大的负担,保持它“以防万一”以供以后使用的成本(因为您压缩了您的提交并可能希望在稍后点检查单个步骤以获得错误解决方案)在磁盘空间方面可能是非常低的。
您还可以在分支的顶端添加一个标记*,删除分支**,然后可以对这些未压缩的提交进行进一步检查(这再次说明了磁盘空间成本,但如果您希望分支列表中没有任何已完成的工作,则可能会更清楚)。
*与git tag before-the-squash upgrading
**与git branch -D upgrading
发布于 2019-03-31 15:20:59
吉特想保护你不失去你所做的一切.Git检测到您没有合并在此分支上所做的工作(升级)。
但是,正如您所说的,您想要删除,因为进程失败了。所以,这意味着你肯定要删除它,并失去你在那里所做的一切。
对于这个git来说,它也说明了如何去做。只管跑:
git分支-D升级
https://stackoverflow.com/questions/55442048
复制相似问题