git push not send changes to remote git repository

2019-01-16 23:53发布

问题:

I am making changes to some file in my local git repository and then want to send the changes to the remote git repository from which the local was cloned via ssh.

After run "git commit -a" on my local side, to send the changes to the remote, I run

$ git push
Everything up-to-date

However I checked the remote files and they are not changed! Any idea?

Thanks and regards!

回答1:

You probably pushed into a non-bare repository, i.e. a repository that has a working copy attached to it. You shouldn’t have ignored the warning git push gives you if it notices that this is the case.

Anyway, log in to the remote machine, change to the repository and do

git checkout <whatever branch you’re on>

There you go. Next time only push into bare repositories. :)



回答2:

have you tried the following?

 $ git push origin master:master


回答3:

I found that the issue was that I had not added the files to the update as well as a message. I fixed this by using the following commands:

git add .

and then

git commit -m "updates done by..."

and then

git push origin <repo_name>

Hope this helps someone ;)



回答4:

I had the same issue and it was because I had checked out to a point in the history (in this case a tag), rather than the end (head) of any branch or master. I would make the change and commit which would succeed and I would see the changes in my local history. When I ran git push, git stated everything was fine, but the change had not actually been submitted to the server (which can be seen by checking the logs, or by re-cloning the repo and checking it's logs). The best symptom of this mistake is seeing the message "Head detatched from ____"

The Solution

What one actually needs to do (if you have done what I've done) is create a new line of development by creating a branch and switching to that branch before making the changes.

git branch [a new branch name]
git checkout [a new branch name]  

Then after committing the changes, if you want the changes to be pushed to the server you need to push the branch itself to the server.

git push -u origin [local branch name]

Now if you clone the repository, you should see your changes in the logs. However, next time you clone the repository, to be able to go to that point you just changed, you will need to checkout that branch, as you will default to being on the main line which is "further" down the development line from where you branched off.

git checkout [branch name]  


回答5:

git commit --amend

Will change the commit ID and make the remote repository "think" new changes has been made.



回答6:

I suggest you look into using gitosis for hosting those git bare repositories. It's really easy to use after the initial setup.



回答7:

type "git log" in your remote repository to see if it contains the newest commit. If not, you should check the configuration of you local repository to see the remote settings.

To see the changes in different type of your remote repository:

A. If your remote repository is bare, you can find the files in the remote repository branches/ config description HEAD hooks/ info/ objects/ refs/

after new commit is pushed, files in objects/ directory would changed.

B. If your remote repository is non-bare, type "git checkout master" And "git status" in your remote repository to see the file status. See if some file has been modified or deleted.



回答8:

None of these solutions worked for me, and the commits would appear on my live website only after running GIT_WORK_TREE=/path/to/website git checkout -f. If this is your case you have to add a "hook" to your git configuration.

  1. Go to your the hooks folder inside your git folder:

    cd ~/path/.git

    cd hooks

    nano post-receive

  2. Write this line in the post-receive file:

    GIT_WORK_TREE=/path/to/your/website/or/project/ git checkout -f

  3. Lastly, you have to modify the permissions of the post-receive file:

    chmod a+x post-receive

This will execute that command every time you push, updating your commits on your remote project.



回答9:

I just experienced a similarly frustrating occurrence of not seeing my change replicated on github. As a new git user, just getting used to the using the system, I created a folder on my computer, added it, committed it, pushed it - no change. I considered the possibility that I cannot push an empty directory, so I created an empty file in the directory and then repeated the above steps. All better, the change was instantly mirrored in my github repo.



回答10:

One other issue could be that while you might have used

git add your-dirs

You have to remember to commit the files within directories

git commit -m'Add your message' your-dir/*

Then add a git push in order to push it to your remote



标签: git push