问题
So - today I wanted to do a good thing and rearrange files in my repository. Committed and pushed up to my Assembla
repository.
Since I did not use the git moving command, all files lost their history. I realized my mistake and wanted to get rid of the unneeded changing so I could make the right kind of move afterwards. I tried the approach, showed in here, but instead I got:
$ git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To git@git.assembla.com:myproject.git
! [remote rejected] 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 -> master (non-fast-forward)
error: failed to push some refs to 'git@git.assembla.com:myproject.git'
Info:
% 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78 is the one tagged 'beforerearrange'
Any suggestions on how to fix this problem?
回答1:
When asked, I had no idea it could be connected with restrictions of Assembla
.
Since this is a one time deal, I choose the following method that worked:
Citing the last comment from Assembla in the link (now obsolete but you can still find it in way back machine) mentioned by @michael-mior There is now an option “Allow force push” in the Git-Settings page, so
- Go to Assembla.com
- Go to your project -> Source/Git -> Settings
- Check the check-box "Allow --force push"
Force push the right node:
git push -f origin 49bcfdceb30a1e9cfab0f0e7e39bfa04dc726b78:master
- Clean up local mess.
- Go back to Assembla.com and disable "Allow --force push"
Result:
回答2:
It seems Assembla denies forced pushes. (This thread suggests you have to contact support.)
Since it's just a few commits, your best option is probably just to use git revert
to undo them all in turn.
来源:https://stackoverflow.com/questions/13344483/undo-git-push-to-assembla