Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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分支还原回master以重新合并主题分支_Git - Fatal编程技术网

将Git分支还原回master以重新合并主题分支

将Git分支还原回master以重新合并主题分支,git,Git,设置 我们将主分支用于我们的活动环境。也就是说,master上的所有内容都适合部署到实时环境中 类似地,我们使用一个暂存分支来运行暂存环境 在主题分支上进行任何更改。这些将被合并到QA的暂存中,一旦它们被清除用于部署,主题分支将被合并到master中并被丢弃 Master和topic分支位于Github上,暂存只存在于本地和用于构建暂存环境的存储库中 问题 有时,话题会越来越多。它们已经被合并到暂存中,但由于任何原因(客户方面的时间限制、外部依赖性等),它们都没有被清除以投入使用。通常这不是问题

设置

我们将主分支用于我们的活动环境。也就是说,master上的所有内容都适合部署到实时环境中

类似地,我们使用一个暂存分支来运行暂存环境

在主题分支上进行任何更改。这些将被合并到QA的暂存中,一旦它们被清除用于部署,主题分支将被合并到master中并被丢弃

Master和topic分支位于Github上,暂存只存在于本地和用于构建暂存环境的存储库中

问题

有时,话题会越来越多。它们已经被合并到暂存中,但由于任何原因(客户方面的时间限制、外部依赖性等),它们都没有被清除以投入使用。通常这不是问题,他们只是在舞台上停留了一段时间

但现在我有几个分支可能在几个月内都不会上线,当新的主题分支进入暂存时,它们开始引起合并冲突

因此,我想做的是清理历史记录:基本上将登台分支恢复到最新的主服务器提交,然后重新应用所有可能在不久的将来完成的主题分支。在此之后,我希望能够将恢复的暂存分支推送到我们的暂存环境用于部署的远程repo,而无需在所述存储库中进行额外清理


我该怎么做?多谢各位

不确定您是否需要程序建议或git命令来执行此操作。 如果我没弄错的话,这可能会有帮助:

将登台分支恢复到主机上的最新提交

重新应用所有可能在不久的将来完成的主题分支

注:重新定基是一个经常讨论的问题,因为它“改变了过去”。建议让所有开发人员保持同步(即确保他们的提交不涉及任何您将要消除后验的内容),并可能备份您的存储库


rebase-i启动交互模式。然后,您将能够将topic1更改应用于暂存头,就像您从那里开始一样。有很好的文档和。

使用此方法,我是否能够简单地将“新登台”推送到“远程登台”,而不必Git抱怨?我已经按照您描述的方式尝试了硬重置,让我的Git客户端显示我的本地回购在远程回购之后的数百次提交。不过,我还没有尝试将其推送到远程回购。你是对的:如果你指的是“git reset--hard”,那就不会达到你想要的效果。它只是将当前分支重置为引用的提交;然而,您可以将“重基”视为获取当前头部的历史记录,取消应用它,然后将其重新应用到引用的提交。之后,它看起来像是从引用的提交开始,并从那里应用了所有更改。在这种特殊情况下,它只需执行重置,而不是在中合并其他分支(无重基)并强制将其推送到我的暂存环境。因为它只是一个临时分支,所以这样就可以了。
$ git checkout staging
$ git reset --hard master
$ git checkout topic1
$ git rebase -i staging
$ git checkout topic2
$ git rebase -i staging
...