git push says everything up-to-date even though I have local changes
Are you working with a detached head by any chance?
As in:
indicating that your latest commit is not a branch head.
Warning: the following does a git reset --hard
: make sure to use git stash
first if you want to save your currently modified files.
$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>
As mentioned in the git checkout
man page (emphasis mine):
It is sometimes useful to be able to checkout a commit that is not at the tip of one of your branches.
The most obvious example is to check out the commit at a tagged official release point, like this:
$ git checkout v2.6.18
Earlier versions of git did not allow this and asked you to create a temporary branch using the
-b
option, but starting from version 1.5.0, the above command detaches yourHEAD
from the current branch and directly points at the commit named by the tag (v2.6.18
in the example above).You can use all git commands while in this state.
You can usegit reset --hard $othercommit
to further move around, for example.
You can make changes and create a new commit on top of a detached HEAD.
You can even create a merge by usinggit merge $othercommit
.The state you are in while your HEAD is detached is not recorded by any branch (which is natural --- you are not on any branch).
What this means is that you can discard your temporary commits and merges by switching back to an existing branch (e.g.git checkout master
), and a latergit prune
orgit gc
would garbage-collect them.
If you did this by mistake, you can ask the reflog for HEAD where you were, e.g.$ git log -g -2 HEAD
While git push
says "everything up-to-date", you still can technically push a detached HEAD, as noted in the comments by Jonathan Benn
git push origin HEAD:main
You have to specify the destination branch, since the source is not a branch, and does not have an upstream target branch.
git says everything-up-to-date when pushing changes to a remote branch
Depending on your version of Git, it may be trying to push branches with matching names, i.e., master
to origin/master
and remote_branch
to origin/remote_branch
. If your origin repository doesn't have a branch named mybranch
then it thinks there's nothing to update.
To override this default, you can explicitly tell git which branch to use as the source (mybranch
) and which to use as the destination on the remote repository (remote_branch
):
git push origin mybranch:remote_branch
There's a config option to tell git to push to remote tracking branches by default:
git config --global push.default tracking
I find this more intuitive and I think it's the behavior you're looking for. Checkout the push.default
option in the git config man page. Also checkout the Examples section in the git push man page to see how to override the default behavior.
Git Push everything up to date but file on github not change
Have you committed first? With git, you need to commit your changes first, which is like saving each version locally. Then, when you push, you are publishing all of your versions to the remote (github).
Try the following:
git status
if it tells you about untracked files, use:
git add <filepath>
then:
git commit -m "<some commit message>"
This will save your changes as a commit locally, and you can now push this commit to github with the push command you used earlier.
Git push says Everything up-to-date but it's not
You have only staged the file for commit, but not actually committed the change. You have to commit the change to get a commit-id which is then used during the push/pull phase.
git commit
With git
, committing a change is a two step process.
The first step is to add your change(s) to a so called staging area. This is local to the repo and will not participate when pushing a changes to the remote. In your case you have added a new file to the staging area and git push will not consider the changes in the staging area. Only changes that are committed are discussed during the push/pull process.
The second step is to commit the changes.. This step you don't get to choose what changes you can commit. All the changes that you have added in the staging area gets into the commit and git creates a commit-id which is now version controlled (in your local repo).. Once a commit is done, the staging area is clear.
some commands to add files to the staging are.
git add <file_name> #Add all changes made to this file.
git add <dir> #Add all changed files in that directory.
git add -i # This is interactive menu-type command
Instead of adding all the changes(called as hunks) made to a file, You can also choose to add selected changes in a file, using the patch option.
git add -i #choose patch option.
The changes in staging area is the delta from HEAD
. To remove the changes from the staging area you have to reset the HEAD file as it was in HEAD. Once you reset, all changes are gone from the staging area but not lost, you will see the hunks in the un-staged area.
git reset HEAD <file>
Git says `Everything up-to-date` but Github is 61 commits behind master
Add the upstream repo as a remote, and pull from that instead. For example:
$ git remote add upstream git@github.com:user/repo.git
$ git pull upstream main
git push says Everything up to date
The reason the new branch was not pushed into the remote repository was simply because I did not use the double quotes.
git push origin "new-branch"
Also when renaming branches always use the double quotes - at least in my case it worked while not all code samples in the web use this syntax.
Related Topics
Spawn_Id: Spawn Id Exp6 Not Open
How to Get The Process Id of Command Executed in Bash Script
Text Encoding Between Linux and Windows
Creating Filename_$(Date %Y-%M-%D) from Systemd Bash Inline Script
How to Run The Linux/X86/Shell_Bind_Tcp Payload Stand Alone
Hide Information During Bash Debug Run
How to Get Exact List of Collections Form Mongo Database in Shell Script
Arch/X86/Include/Asm/Unistd.H VS. Include/Asm-Generic/Unistd.H
Ssh - Help Understanding Proxy Command
Difference Between Double and Single Bigger Than in Linux Terminal
Launching Sonar Scanner from a Gitlab Docker Runner
Expect Script Error Send: Spawn Id Exp4 Not Open While Executing
Building Subversion 1.5.4 on Debian: Could Not Find Library Containing Rsa_New
How to Two Mmap on Same /Dev File
Karma Not Found from Maven After Re-Install
Run Hydra (Mpiexec) Locally Gives Strange Ssh Error
Perl Signal Processing Only Works Once When Sighandler Calls Subroutine