在我的本地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 push
以denying non-fast-forward refs/head/master
失败。我可以选择解决这个问题吗?
我的回购并不是很有条理,我想一劳永逸地重构它。
答案 0 :(得分:2)
你被允许强制推动吗?
否则您是否可以删除分支?在这种情况下,您可以删除旧分支并推送新分支,这与强制推送基本相同。
答案 1 :(得分:2)
git checkout master
git merge origin/master strategy=ours
git push origin master
“我们的”策略忽略了提交A
和B
之间所做的所有更改,并进行了“假”合并(仅在名称中合并)。 git push
然后愉快地在旧origin/master
和新master
之间进行快进提交。
结果:
* commit A
|\
| * commit B (develop)
| |
* | commit C
| /
* commit D, but identical to C (master) (origin/master)