For some reason, I can't push now, whereas I could do it yesterday. Maybe I messed up with configs or something.
This is what happens:
When I use the git push origin master
What my working directory and remote repository looks like:
For some reason, I can't push now, whereas I could do it yesterday. Maybe I messed up with configs or something.
This is what happens:
When I use the git push origin master
What my working directory and remote repository looks like:
(Note: starting Oct. 2020, any new repository is created with the default branch main
, not master
. And you can rename existing repository default branch from master
to main
.
The rest of this 2014 answer has been updated to use "main
")
If the GitHub repo has seen new commits pushed to it, while you were working locally, I would advise using:
git pull --rebase
git push
The full syntax is:
git pull --rebase origin main
git push origin main
With Git 2.6+ (Sept. 2015), after having done (once)
git config --global pull.rebase true
git config --global rebase.autoStash true
A simple git pull
would be enough.
(Note: with Git 2.27 Q2 2020, a merge.autostash
is also available for your regular pull, without rebase)
That way, you would replay (the --rebase
part) your local commits on top of the newly updated origin/main
(or origin/yourBranch
: git pull origin yourBranch
).
See a more complete example in the chapter 6 Pull with rebase of the Git Pocket Book.
I would recommend a:
# add and commit first
git push -u origin main
That would establish a tracking relationship between your local main branch and its upstream branch.
After that, any future push for that branch can be done with a simple:
git push
See "Why do I need to explicitly push a new branch?".
Since the OP already reset and redone its commit on top of origin/main
:
git reset --mixed origin/main
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin main
There is no need to pull --rebase
.
Note: git reset --mixed origin/main
can also be written git reset origin/main
, since the --mixed
option is the default one when using git reset
.
Did anyone try:
git push -f origin master
That should solve the problem.
EDIT: Based on @Mehdi ‘s comment below I need to clarify something about
—force pushing
. The git command above works safely only for the first commit. If there were already commits, pull requests or branches in previous, this resets all of it and set it from zero. If so, please refer @VonC ‘s detailed answer for better solution.
I find the solution to this problem in github help.
You can see it from:Dealing with non-fast-forward errors
It says:
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 branch
# Merges updates made online with your local work
Or, you can simply use git pull to perform both commands at once:
$ git pull origin branch
# Grabs online updates and merges them with your local work
I had faced same problem,fixed with below steps .
git init
git add .
git commit -m 'Add your commit message'
git remote add origin https://[email protected]/User_name/sample.git
(Above url https://[email protected]/User_name/sample.git refers to your bit bucket project url )
git push -u origin master
hint
check if your git hub account link with your local git by using:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
I created an empty repo in GitHub, and have my code locally. I faced the same issue now, as I followed the below sequence,
git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master
ISSUE WAS: I tried to commit before staging the files I have.
SO WE NEED TO STAGE THE FILES AND THEN COMMIT.
This is the correct sequence.
git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master
Since I execute the wrong sequence first, I just execute the below commands
git add .
git commit -m 'Initial Commit'
git push -u origin master
Because maybe have nothing to push (really, no thing to push). Do like this
git remote add origin https://github.com/donhuvy/accounting133.git
git remote -v
git add .
git commit -m"upload"
git push --set-upstream origin master
Change the remote repository url in your case. Command git remote -v
you can skip, just for checking.
If you are attempting to initialize a directory with an existing GitHub repository, you should ensure you are committing changes.
Try creating a file:
touch initial
git add initial
git commit -m "initial commit"
git push -u origin master
That will place a file named initial that you can delete later.
Hope this answer helps! Goodluck!
In my case, it was my husky
package that disallows the push.
> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://[email protected]/username/my-api.git'
To push it forcefully, just run
git push origin master --no-verify
I ran npm run prepush
to see debug the error, and this was the cause:
npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run npm install to fix them.
npm ERR! Invalid: lock file's [email protected] does not satisfy loopback-utils@^0.9.0
Ran npm install
and commit it, and the problem is fixed.