Git谜题-解决“拒绝非快进”问题`

Git谜题-解决“拒绝非快进”问题`,git,amazon-elastic-beanstalk,Git,Amazon Elastic Beanstalk,在我的本地git存储库中,我基本上: * commit A | * commit B (master) (origin/master) 我做了一些更改,现在是: * commit A |\ | * commit B (develop) (origin/master) | * commit C (master) 我希望Git repo(托管在beanstalkapp.com上)能够更新以反映这一点,并且看起来像: * commit A |\ | * commit B (develop) (or

在我的本地git存储库中,我基本上:

* commit A
|
* commit B (master) (origin/master)
我做了一些更改,现在是:

* commit A
|\
| * commit B (develop) (origin/master)
|
* commit C (master)
我希望Git repo(托管在beanstalkapp.com上)能够更新以反映这一点,并且看起来像:

* commit A
|\
| * commit B (develop) (origin/develop)
|
* commit C (master) (origin/master)
我该怎么做
git推送
失败,拒绝非快进参考/head/master。我有什么办法来解决这个问题


我的回购协议没有很好的组织性,我想一劳永逸地对其进行重构。

您可以强制推送吗


否则,是否允许删除分支?在这种情况下,您只需删除旧分支并推送新分支,这与强制推送基本相同。

是否允许执行强制推送

git checkout master
git merge origin/master strategy=ours
git push origin master
否则,是否允许删除分支?在这种情况下,您可以删除旧分支并推送新分支,这与强制推送基本相同

git checkout master
git merge origin/master strategy=ours
git push origin master
“我们的”策略忽略提交
A
B
之间所做的所有更改,并进行“假”合并(仅名义上的合并)
gitpush
然后愉快地在旧的
origin/master
和新的
master
之间进行快进提交

结果是:

* commit A
|\
| * commit B (develop)
| |
* | commit C
| /
* commit D, but identical to C (master) (origin/master)
“我们的”策略忽略提交
A
B
之间所做的所有更改,并进行“假”合并(仅名义上的合并)
gitpush
然后愉快地在旧的
origin/master
和新的
master
之间进行快进提交

结果是:

* commit A
|\
| * commit B (develop)
| |
* | commit C
| /
* commit D, but identical to C (master) (origin/master)

Beanstalk不允许强制推送,并且我无法删除尚未合并的分支。我认为,我需要做的是将
origin/master
合并到新的
master
,但要保持新的
master
不被修改(即,删除提交a和B之间的所有更改,这是一种虚假的合并)。看起来beanstalk真的想让你远离这样的任务。(毕竟,您确实在尝试更改已发布的历史记录…)如果您确定要这样做,您可以删除整个存储库并使用新内容重新创建它。-或者,只需使用
git revert
来“撤消”更改。这确实会留下一些多余的提交,但您至少可以在不更改历史记录的情况下创建正确的分支内容。Beanstalk不允许强制推送,并且我无法删除尚未合并的分支。我认为,我需要做的是将
origin/master
合并到新的
master
,但要保持新的
master
不被修改(即,删除提交a和B之间的所有更改,这是一种虚假的合并)。看起来beanstalk真的想让你远离这样的任务。(毕竟,您确实在尝试更改已发布的历史记录…)如果您确定要这样做,您可以删除整个存储库并使用新内容重新创建它。-或者,只需使用
git revert
来“撤消”更改。这确实会留下一些多余的提交,但您至少可以在不更改历史记录的情况下创建正确的分支内容?在结帐和合并之间,您也做了更改,看起来是吗?@pal4life是的。大师是一个普通的分支,就像其他分支一样。不确定你的第二个问题。我们能把这个应用到分支机构吗?在结帐和合并之间,您也做了更改,看起来是吗?@pal4life是的。大师是一个普通的分支,就像其他分支一样。我不确定你的第二个问题。