Andrew, On Thu, Apr 19, 2018 at 6:55 AM, Andrew Ducker <andrew_ducker@xxxxxxxxxxxxxxxx> wrote: > > 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