在git rebase of branch之后推送新的提交

时间:2014-10-08 10:01:17

标签: git github version-control

我有一个master分支和一个new分支。当我开始在new分支上工作时,我忘了提取最新的提交,并且在master后面提交了20次提交。我还在new分支中进行了一些更改。

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

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

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

问题是这些早期提交仅反映在我new分支的本地版本中。我在键入git log时看到了这一点。当我检查远程版本时,它仍然有旧版本,因为我没有提交/推送这些旧提交。当我检查git status时,没有什么可以提交。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你想要完成的事情可能有点危险"。你有远程分支机构:

  • 起源/主
  • 起源/新

和当地分支机构

将本地新分支重新定位到最新的origin / master提交时,您将重写历史记录。对于本地工作,这不是问题。如果您的提交之前已经被推送到远程,并且其他开发人员可能从中获得了工作,那么它可能会导致很多问题,因为您现在至少有两个版本的相同更改。

如果您100%确定没有任何衍生作品,您可以将本地新分支推送到服务器

git push origin new
但是,这将失败,因为您尝试推送的提交不是来自先前的原始/新提交的快进合并。你需要强制推动:

git push origin new -f

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