git - 如何在Git仓库中克隆最新标签

原文 标签 git

git ls-remote --tags git://github.com/git/git.git


列出最新标签而不进行克隆。
我需要一种能够直接从最新标签克隆的方法

最佳答案

将此称为~/bin/git-clone-latest-tag

#!/bin/bash

set -euo pipefail
basename=${0##*/}

if [[ $# -lt 1 ]]; then
    printf '%s: Clone the latest tag on remote.\n' "$basename" >&2
    printf 'Usage: %s [other args] <remote>\n' "$basename" >&2
    exit 1
fi

remote=${*: -1} # Get last argument

echo "Getting list of tags from: $remote"

tag=$(git ls-remote --tags --exit-code --refs "$remote" \
  | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' | tail -n1)

echo "Selected tag: $tag"

# Clone as shallowly as possible. Remote is the last argument.
git clone --branch "$tag" --depth 1 --shallow-submodules --recurse-submodules "$@"


然后,您可以执行以下操作:

% git clone-latest-tag https://github.com/python/cpython.git
Getting list of tags from: https://github.com/python/cpython.git
Selected tag: v3.8.0b1
Cloning into 'cpython'...
remote: Enumerating objects: 4346, done.
...

相关文章:

git - 如何在特定的提交点将git存储库拆分为最新和较旧的提交,并保留分支?

git - 具有MAC的Parallels中的Visual Studio不断重新加载项目

git - `git flow release finish`非交互式

git - git递归添加所有.tex文件

git - 忽略名称以'output'开头的文件

node.js - npm安装在访问GIT URL时出错

git - git:如何找到已经合并的两个分支的共同祖先

python - 无法同步数据库“ DatabaseError:无此类表:django_site”

git - 如何检查git分支是否具有跟踪分支?

git - IntelliJ:在本地和git commit / branch之间查看所有已更改文件的diff