可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am fairly new to git
yet currently using it to manage our code in a team environment. I had some rebasing issues and I fixed them using
git checkout --ours filename.txt
git add filename.txt
git rebase --continue
Now I wish to push my changes, and so running the following command
$ git push origin feature/my_feature_branch
gives me the following error:
To ssh://git@coderepo.com:7999/repo/myproject.git
! [rejected] feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
What can I do to get rid of the error?
P.S. : I am avoiding to use the --force
option as much as possible.
回答1:
It looks, that someone pushed new commits between your last git fetch
and git push
. In this case you need to repeat your steps and rebase my_feature_branch
one more time.
git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch
After the git fetch
I recommend to examine situation with gitk --all
.
回答2:
Probably you did not fetch the remote changes before the rebase or someone pushed new changes (while you were rebasing and trying to push). Try these steps:
#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch
git fetch origin feature/my_feature_branch:tmp
#rebasing on local 'tmp' branch
git rebase tmp
#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch
#removing temporary created 'tmp' branch
git branch -D tmp
回答3:
I had this problem!
I tried: git fetch + git merge, but dont resolved!
I tried: git pull, and also dont resolved
Then I tried this and resolved my problem (is similar of answer of Engineer):
git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp
回答4:
I'm late to the party but I found some useful instructions in github help page and I wanted to share them here.
Sometimes, Git can't make your change to a remote repository without losing commits. When this happens, your push is refused.
If another person has pushed to the same branch as you, Git won't be able to push your changes:
$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
You can fix this by fetching and merging the changes made on the remote branch with the changes that you have made locally:
$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work
Or, you can simply use git pull
to perform both commands at once:
$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work
回答5:
I had a similar problem and i resolved it with:
git pull origin
回答6:
Write lock on shared local repository
I had this problem and none of above advises helped me. I was able to fetch everything correctly. But push always failed. It was a local repository located on windows directory with several clients working with it through VMWare shared folder driver. It appeared that one of the systems locked Git repository for writing. After stopping relevant VMWare system, which caused the lock everything repaired immediately. It was almost impossible to figure out, which system causes the error, so I had to stop them one by one until succeeded.
回答7:
Well I used the advice here and it screwed me as it merged my local code directly to master. .... so take it all with a grain of salt. My coworker said the following helped resolve the issue, needed to repoint my branch.
git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch
回答8:
In Eclipse do the following:
GIT Repositories > Remotes > Origin > Right click and say fetch
GIT Repositories > Remote Tracking > Select your branch and say merge
Go to project, right click on your file and say Fetch from upstream.