git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug Report - Pull remote branch does not retrieve new tags

From
Bryan Turner <bturner@atlassian.com>
Date
Apr 19, 2018, 22:14 UTC
Message-ID
<CAGyf7-G7GDX6DtpAqQvQ-8Rwad1VS6_xdDw_Rt_p5kT-C7dFZA@mail.gmail.com>
In-Reply-To
<adc410f016e8405fb81fa92e45675e2a@standardlife.com>
Andrew,

On Thu, Apr 19, 2018 at 6:55 AM, Andrew Ducker <andrew_ducker@standardlife.com> wrote:

Show 21 quoted lines
>
> What happens:
> When I create a new tag on the remote (changing nothing else)
> "git pull origin master" produces the following:
>   From git.internal.company.com:team/testrepo
>    * branch            master     -> FETCH_HEAD
>   Already up-to-date.
>
> If I instead do a "git pull" I get:
>   From git.internal.company.com:team/testrepo
>    * [new tag]         Testing11  -> Testing11
>   Already up-to-date.
>
> What I think should happen:
> The "git pull origin master" should retrieve the tag.
>
> This is with 2.16.2.windows.1, but also occurred on my previously installed version (2.12.2.windows.2)
>
> My understanding is that "git pull" and "git pull $repo $currentbranch" should function identically.
>
> Is this a bug, or am I misunderstanding the manual page?
Looks like a misunderstanding, to me. Perhaps I can help clarify.

"git pull" without arguments fetches from the "origin" repository using the configured "fetch" refspecs, which typically looks something like "fetch = +refs/heads/*:refs/remotes/origin/*". It _doesn't_ actually fetch all tags, but any tag referencing any object/commit included in the branches is brought along for the ride. This is documented on "git pull":

--no-tags
    By default, tags that point at objects that are downloaded from
the remote repository are fetched and stored locally. This option
disables this automatic tag following. The default behavior for a
remote may be specified with the remote.<name>.tagOpt setting. See
git-config(1).

By comparison, on your "git pull $repo $currentBranch", what you're calling "$currentBranch" is actually "[<refspec>...]" from the documentation. In other words, by passing "master", you've told "git pull" to fetch _nothing but "master"_, ignoring the configured refspec(s). Additionally, since you haven't told "git pull" where to _put_ "master" once it's fetched, it writes it to "FETCH_HEAD". If you have a tracking branch setup, "git pull origin master" will also update the tracking branch. For example, the same command for me produces:

$ git pull origin master
From ...
 * branch                    master     -> FETCH_HEAD
   aca5eb0fef5..ad484477508  master     -> origin/master

As you can see, both FETCH_HEAD and origin/master were updated, since my local "master" tracks "origin"'s "master":

[branch "master"]
        remote = origin
        merge = refs/heads/master

Hope this helps! Bryan

Previous: Andrew DuckerNext: Andrew Ducker
Message 2 of 4 in “Bug Report - Pull remote branch does not retrieve new tags”
  1. Andrew DuckerApr 19, 2018
  2. Bryan TurnerApr 19, 2018
  3. Andrew DuckerApr 20, 2018
  4. Ævar Arnfjörð BjarmasonApr 20, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.