Git development
 help / color / mirror / Atom feed
From: "Björn Steinbrink" <B.Steinbrink@gmx.de>
To: Rene Herman <rene.herman@keyaccess.nl>
Cc: git@vger.kernel.org, Takashi Iwai <tiwai@suse.de>
Subject: Re: git pull versus fetch/merge
Date: Mon, 21 Jul 2008 12:23:20 +0200	[thread overview]
Message-ID: <20080721102320.GA19776@atjola.homenet> (raw)
In-Reply-To: <488452D6.1060508@keyaccess.nl>

On 2008.07.21 11:11:50 +0200, Rene Herman wrote:
> 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.

"git pull remote branch" does "git fetch remote branch". That only
fetches that single branch and stores it in FETCH_HEAD. The merge part
then merges what is in FETCH_HEAD into your current branch.

> 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)

The rejected branches had their history rewritten since your last fetch.
Git rejects to update your remote tracking branches in that case. The
history rewriting might have been an accident, or it might have been
intentional. Only the owner of that repo is able to tell that.

You can use -f to force the updates.

> 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?

Your fetch/merge approach was different from what your pull approach
did. tiwai/devel did not get updated by the fetch, which means that you
tried to merge the old state of that branch and that caused some
conflicts. OTOH the pull did fetch the latest state from the remote repo
and merged that cleanly.

Your fetch/merge approach was more like "git pull" without any
arguments, but with the current branch setup to track tiwai/devel. In
that case, pull really does a "git fetch tiwai", and it should fail in
the same way.

Björn

  reply	other threads:[~2008-07-21 10:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-21  9:11 git pull versus fetch/merge Rene Herman
2008-07-21 10:23 ` Björn Steinbrink [this message]
2008-07-21 10:58   ` Rene Herman
2008-07-21 11:09     ` Jeff King
2008-07-21 11:09       ` Jeff King
2008-07-21 11:30       ` Rene Herman
2008-07-21 11:33         ` Björn Steinbrink
2008-07-21 11:39           ` Rene Herman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080721102320.GA19776@atjola.homenet \
    --to=b.steinbrink@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=rene.herman@keyaccess.nl \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox