Working around `denying non

In my local git repository, I had essentially:

* commit A
|
* commit B (master) (origin/master)

I made some changes so it is now:

* commit A
|
| * commit B (develop) (origin/master)
|
* commit C (master)

I would like the Git repo (hosted on beanstalkapp.com) to be updated to reflect this, and look like:

* commit A
|
| * commit B (develop) (origin/develop)
|
* commit C (master) (origin/master)

How can I do this? git push fails with denying non-fast-forward refs/head/master . What are my options to work around this?

My repo hasn't been very organized, and I'd like to refactor it once and for all.


Are you allowed to do a forced push?

Otherwise are you allowed to delete a branch? In that case you can just delete the old branch and push the new one, which is essentially the same as a forced push.


git checkout master
git merge origin/master strategy=ours
git push origin master

The 'ours' strategy ignores all changes made between commit A and B , and makes a "fake" merge (a merge in name only). git push then happily does a fast-forward commit between the old origin/master and the new master .

The result:

* commit A
|
| * commit B (develop)
| |
* | commit C
| /
* commit D, but identical to C (master) (origin/master)
链接地址: http://www.djcxy.com/p/49040.html

上一篇: 详细的原因为什么远程git rebase是如此邪恶

下一篇: 解决`拒绝非