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

Re: Fetching master branch with tags associated with it

From
Jeff King <peff@peff.net>
Date
Feb 22, 2019, 16:07 UTC
Message-ID
<20190222160722.GA22531@sigill.intra.peff.net>
In-Reply-To
<CAEXP2g92_pnbh4_V8VOgzzdUv6w5eDhCsXf=+NOdsRwyjQUb5A@mail.gmail.com>
On Thu, Feb 21, 2019 at 06:02:54PM +0100, Dominik Salvet wrote:
Show 22 quoted lines
> Now, I want to refresh the repository the same way - fetching only
> commits from the master branch and tags that are pointing to the
> master branch and also refresh those tags as well in case of their
> target commit change at the remote (you can expect that it always
> points to a master commit). Nevertheless, I don't really know how to
> do it. The closest I got, are the following commands:
> 
> ```sh
> git fetch --tags origin master &&
> git merge FETCH_HEAD
> ```
> 
> However, there obviously are some problems with this solution. The
> `--tags` flag will cause to fetch tags from all branches. Furthermore,
> it will fetch also their commits, which is absolutely what I don't
> want to.
> 
> I have Git 2.17.1 (on Ubuntu 18.04.2) and in its `git fetch --help` is
> stated, if I understood it correctly, that without passing neither
> `--tags` nor `--no-tags`, it will do exactly what I want.
> Nevertheless, without using any of the mentioned flags, it behaves
> more like using `--no-tags`.

Generally yes, that's how it's supposed to work. However, I think tag-following does not kick in when you've given a specific refspec.

So take this toy setup for example:

-- >8 -- git init repo cd repo

# one tags accessible from master git commit --allow-empty -m one git tag one

# one tag accessible only from "other" git checkout -b other git commit --allow-empty -m two git tag two

# now fetch into another repository git init child cd child git remote add origin .. git fetch origin master -- 8< --

That won't pick up the "one" tag in that final fetch. But if you use the normal configured refspec (but tell it only to grab "master"):

  git config remote.origin.fetch refs/heads/master:refs/remotes/origin/master
  git fetch origin

then it works. I don't know if there's a less-awkward way to get what you want, though. It really seems like there should be a "--tags=follow" or similar.

-Peff
Previous: Dominik SalvetNext: Randall S. Becker
Message 2 of 3 in “Fetching master branch with tags associated with it”
  1. Dominik SalvetFeb 21, 2019
  2. Jeff KingFeb 22, 2019
  3. Randall S. BeckerFeb 22, 2019

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.