Subject: git pull versus fetch/merge

From: Rene Herman <[email-masked]>
Date: Mon, 21 Jul 2008 11:11:50 +0200

Good day.

A while ago I was here asking about "git pull" versus "git merge" for 
local branches -- now I see a difference for remote ones that I'm not 
sure should be there.

I gathered before that "git pull <remote> <branch>" should basically be 
shorthand for "git fetch <remote>, git merge <remote>/<branch>". Is that 
correct?

I'm seeing a problem I believe with a specific repository:

rene@7ixe4:~/src/linux/7ixe4$ git remote show tiwai
* remote tiwai
   URL: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
   Tracked remote branches
     devel dma-fix for-linus master upstream

with "git pull tiwai devel" everything goes well:

rene@7ixe4:~/src/linux/7ixe4$ git status
# On branch master
nothing to commit (working directory clean)
rene@7ixe4:~/src/linux/7ixe4$ git branch tmp0 v2.6.26
rene@7ixe4:~/src/linux/7ixe4$ git branch tmp1 v2.6.26
rene@7ixe4:~/src/linux/7ixe4$ git checkout tmp0
Switched to branch "tmp0"
rene@7ixe4:~/src/linux/7ixe4$ git pull tiwai devel
Updating bce7f79..e0bf09b
Fast forward
  Documentation/sound/alsa/ALSA-Configuration.txt    |   17 +-
  [ ... ]

and I get a clean merge. On the other hand, if I try to do this with a 
fetch/merge, I get:

rene@7ixe4:~/src/linux/7ixe4$ git checkout tmp1
Switched to branch "tmp1"
rene@7ixe4:~/src/linux/7ixe4$ git fetch tiwai
 From git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
  ! [rejected]        devel      -> tiwai/devel  (non fast forward)
  ! [rejected]        dma-fix    -> tiwai/dma-fix  (non fast forward)
  ! [rejected]        master     -> tiwai/master  (non fast forward)
rene@7ixe4:~/src/linux/7ixe4$ git merge tiwai/devel
Auto-merged sound/pci/ac97/ac97_patch.c
Auto-merged sound/pci/emu10k1/emu10k1_main.c
Auto-merged sound/pci/hda/patch_analog.c
Auto-merged sound/pci/hda/patch_realtek.c
CONFLICT (content): Merge conflict in sound/pci/hda/patch_realtek.c
Auto-merged sound/pci/hda/patch_sigmatel.c
Automatic merge failed; fix conflicts and then commit the result.

and me no happy...

It probably has something to do with that " ! [rejected]" but what is 
that about? Is the repo bad? (and if so, I suspect owner will want to 
know how to avoid it in the future).

And if it is bad, should I be seeing something with the pull method 
also? Moreover... can I now trust my tmp0 branch?

Rene.