38

There is something I don't understand with the git pull command. I have a foobar Git repository with two files, named f1 and f2. First, I clone this repo using this command:

git clone git@mycompany:foobar/foobar.git 

I make some wrong modifications to both the f1 and f2 files, add them to Git index and commit then.

git add -A
git commit -m 'a test wrong modification'

I decide now that this modifications were wrong and I want to replace my files with the remote version. So I use git pull to do this.

git pull
Already up-to-date.

Git answers that project is already up to date. What's wrong with what I'm doing? How should I proceed to replace my local version with the remote version?

Jeremy
  • 1
  • 85
  • 340
  • 366
ben.IT
  • 1,490
  • 2
  • 18
  • 37

3 Answers3

91
git fetch origin
git reset --hard origin/master

Here is the good explanation about git pull git pull

The git fetch command imports commits from a remote repository into your local repo. The resulting commits are stored as remote branches instead of the normal local branches that we’ve been working with. This gives you a chance to review changes before integrating them into your copy of the project.

Command git pull <remote> fetches the specified remote’s copy of the current branch and immediately merge it into the local copy. This is the same as git fetch <remote> followed by git merge origin/<current-branch>. Since it is doing merge your commits were still there.

After doing fetch you can reset your working copy with reset command. Hard is to ignore any changes in your local copy. git reset --hard origin/master

Tala
  • 8,888
  • 5
  • 34
  • 38
2

To reset specific files, use git checkout:

git checkout HEAD f1
git checkout HEAD f2

You could possibly also use wildcards (*), but I've never tried.

Similar question: How to checkout only one file from git repository?

Resource on git checkout: http://gitready.com/beginner/2009/01/11/reverting-files.html

Community
  • 1
  • 1
bozdoz
  • 12,550
  • 7
  • 67
  • 96
2

Pulling is mainly to merge your remote repository with your local one. Short answer is nothing is wrong with your git setup as your latest remote changes are already there in your local repository. If someone else push changes to the remote repository that is when pull comes handy. Those changes get pulled and merged into your local repository after you do the pull.

AmirHd
  • 10,308
  • 11
  • 41
  • 60