繁体   English   中英

在分支的git rebase之后推送新的提交

[英]Push new commits after git rebase of branch

我有一个master分支和一个new分支。 当我开始在new分支上工作时,我忘记进行最新的提交,而比master落后20个提交。 我还对new分支进行了一些更改。

但是,通过执行以下操作,我可以使用master分支中的其他提交来更新new分支:

git checkout master
git pull --rebase
git rebase master newBranch

然后,我解决了冲突,并使用先前的提交更新了我的new分支。

问题在于这些较早的提交仅反映在new分支的本地版本中。 我在输入git log时看到了这一点。 当我签出远程版本时,它仍然具有旧版本,因为我尚未提交/推送这些旧提交。 当我检查git status ,没有任何要提交的内容。

如何获得新分支以远程(而不是仅本地)获得这些旧提交/更改? 换句话说,远程版本如何与新分支的本地版本具有相同的日志/历史记录?

假设您有一个master分支,并且在master分支之外创建了一个新分支(您拥有所有提交)。现在,如果master分支没有中央存储库中的所有提交,那么我们需要从中进行更改服务器到master分支以及从master到new。 然后,我们需要将本地提交提交到master上,然后从那里进行推送。 以下步骤执行上述操作:

git checkout master
git pull
git checkout new
git rebase master
git checkout master
git merge new
git push

您要完成的工作可能有点“危险”。 您有远程分支机构:

  • 起源/主人
  • 来源/新

和当地分支机构

将本地新分支重新部署到最新的源/主提交时,您将在重写历史记录。 对于本地工作,这不是问题。 如果您的提交以前已被推送到远程,并且其他开发人员可能已经从该远程派生了工作,则这可能会引起很多麻烦,因为您现在至少具有相同更改的两个版本。

如果您100%确保没有人从事任何派生工作,则可以将本地新分支推送到服务器

git push origin new

但是,这将失败,因为您要推送的提交不是从先前的原始提交/新提交进行的快速合并。 您将需要强制执行以下操作:

git push origin new -f

但是,服务器可能会阻止您执行此推送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM