如何将新的(重写)历史推送到远程存储库

基本上,我有一个打开的拉取请求,我想解决,同时我想让1提交包含2个特性到2个独立的提交中。

Github存储库现在看起来像这样,其中修复是一个新的分支:

master c-c-c
            
     fix c-c-c-c

我从修复中创建了一个pull请求。

我想将修复中的最后一个提交更改为我的本地存储库中的两个提交,如下所示:

master c-c-c
            
     fix c-c-c-n-n

其中nn是我的2个新提交。

为了达到这一点,我做到了这一点:

1. git rebase -i HEAD~2
2. Changed my last commit line to "edit", saved and closed the file
3. git reset HEAD^
4. git stash save
5. Removed the changes I don't want in the first commit
6. git commit -m "commit a" -a
7. git stash apply
8. git commit -m "commit b"

所以现在我有2个提交我想要的方式。 问题是我发现了一个错误,最终在pull请求中。 由于我已经推送到远程存储库,它不会接受我的新提交(因为原来的提交失踪)。

我运行:

git push origin fix --dry-run

我收到消息:

To git@github.com:<UserName>/<Repository>.git
! [rejected]        fix -> fix (non-fast-forward)
error: failed to push some refs to 'git@github.com:<UserName>/<Repository>.git'

我已经看到其他帖子建议从原点拉我的变化,然后再推回来,但不会基本上重置我的2提交到一个?

理想情况下,我想要做的是将相同的提交ID分配给最后一次提交,以便它可以按原样替换当前提交ID。 有没有办法做到这一点? (请注意,我没有使用--hard运行git reset


当面对这个问题时,推动力已经为我工作:

git push --force origin fix
链接地址: http://www.djcxy.com/p/26251.html

上一篇: How to push new (rewritten) history to remote repository

下一篇: Git pull into wrong branch