在 git 中,如何将我的标签与远程服务器同步?

2024-04-06

有没有办法让我的本地 git 标签与远程标签保持同步?也就是说——不仅在创建时获得新标签(像往常一样,当fetch-ing/pull-ing),而且还可以删除遥控器上不再存在的标签,并在其他人使用时删除现有标签git push -f是一个标签。 我知道我可以git fetch remotename其次是git remote prune remotename为分支实现类似的行为。


...还修剪不再位于遥控器上的标签

git fetchGit 2.17(2018 年第 2 季度)提供了一个方便的速记方法 摆脱本地持有的陈旧标签。

See commit 6317972 https://github.com/git/git/commit/6317972cff9b4df7a6cc666b08be7133ba81617c, commit 97716d2 https://github.com/git/git/commit/97716d217c1ea00adfc64e4f6bb85c1236d661ff, commit e249ce0 https://github.com/git/git/commit/e249ce0ccdb5c57f45a88daa25d24c5b602ee6e9, commit 627a129 https://github.com/git/git/commit/627a129b46530773369586f7982925fd41dc7227, commit d0e0747 https://github.com/git/git/commit/d0e07472faa938c83e9b1f76567f16614672668c, commit 2c72ed7 https://github.com/git/git/commit/2c72ed740f302bf51e6cd0824b8e7cbde1b1e8c2, commit e1790f9 https://github.com/git/git/commit/e1790f9245f120940be9333b09015e04a8e73127, commit 59caf52 https://github.com/git/git/commit/59caf52d094494a8c02dd7f15302891678533182, commit 82f34e0 https://github.com/git/git/commit/82f34e03e91af42a020f15a1d248bc75785c565a, commit 6fb23f5 https://github.com/git/git/commit/6fb23f56c16c0981a2f7b46f53ac3af12b247996, commit ca3065e https://github.com/git/git/commit/ca3065e7e7bcb406043f8202ef672f884eeb925d, commit bf16ab7 https://github.com/git/git/commit/bf16ab795574c27ffa0fe180cede2d355de41619, commit eca142d https://github.com/git/git/commit/eca142d30818bd9cfc0d3a6b38d6ae4dc4c500a0, commit 750d0da https://github.com/git/git/commit/750d0da9cfbc2519f1ef478d50de0ce549c41f05, commit 0711883 https://github.com/git/git/commit/0711883218039750f940d8febf05a81aa46d2ab9, commit ce3ab21 https://github.com/git/git/commit/ce3ab21b0c179559621fb7450a6f8c24e0a28ddb, commit aa59e0e https://github.com/git/git/commit/aa59e0eaf65b1e535248f67822053e3b2f5fcc26 (09 Feb 2018) by Ævar Arnfjörð Bjarmason (avar) https://github.com/avar.
(Merged by Junio C Hamano -- gitster -- https://github.com/gitster in commit c1a7902 https://github.com/git/git/commit/c1a7902f9adda4c3a64de99d565cf9982f12b1d9, 06 Mar 2018)

fetch: add a --prune-tags选项和fetch.pruneTags config

Add a --prune-tags选项git-fetch, 随着fetch.pruneTags配置选项和一个-P速记(-p is --prune).
这允许执行以下任何操作:

git fetch -p -P
git fetch --prune --prune-tags
git fetch -p -P origin
git fetch --prune --prune-tags origin

或者简单地:

git config fetch.prune true &&
git config fetch.pruneTags true &&
git fetch

而不是更冗长的:

git fetch --prune origin 'refs/tags/*:refs/tags/*' '+refs/heads/*:refs/remotes/origin/*'

在此功能之前支持拉动的用例是痛苦的 来自拥有两个分支的仓库and标签已删除 定期进行,并有我们当地的参考资料来反映上游。

在工作中,我们在存储库中为每次部署创建部署标签,并且 有lots其中,因此它们会在几周内存档 性能原因。

如果没有这个改变很难集中配置这样的存储库/etc/gitconfig(在仅用于使用的服务器上 他们)。你需要设置fetch.prune=true全局,然后对于每个 回购协议:

git -C {} config --replace-all remote.origin.fetch "refs/tags/*:refs/tags/*" "^\+*refs/tags/\*:refs/tags/\*$"

现在我可以简单地设置fetch.pruneTags=true in /etc/gitconfig还有, 和用户运行“git pull" 会自动得到剪枝 我想要的语义。


2021 年 4 月更新,Git for Windows 2.30.1 和GitHub 桌面版 2.8 https://github.blog/2021-04-28-github-desktop-hiding-whitespace-expanding-diffs-repo-aliases/

如果你设置了它就可以工作prune and pruneTags选项:

cd C:\path\to\local\repo
git config fetch.prune true
git config fetch.pruneTags true

然后单击 GitHub Deskop 中的 Fetch origin:日志将显示:

2021-04-28T20:25:21.244Z - info: [ui] Executing fetch: 
  git -c credential.helper= -c protocol.version=2 fetch --progress --prune origin (took 2.986s)

...并且遥控器中不存在的任何本地标签都将消失!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 git 中,如何将我的标签与远程服务器同步? 的相关文章

  • 仅使用 git 存储未暂存的更改(不是 --keep-index)

    首先 我确实知道 keep index 这不是我想要的 因为它仍然隐藏着all更改 但将暂存的更改保留在工作树中 如果可能的话 我只想存储未暂存的文件 而无需再次添加所有更改git stash patch 如果您想存储索引 已暂存的内容 和
  • Gitlab 备份错误:包对象因信号 9 死亡

    我有一个存储库 有 2 个分支 大小为 3 5GB 每个分支大约 1 5GB git 本身就有 700MB 这是错误 备份失败 失败的 失败 opt gitlab embedded bin git git dir mountdata git
  • 如何从 Git 存储库中删除选定的提交日志条目,同时保留其更改?

    我想从线性提交树中删除选定的提交日志条目 以便这些条目不会显示在提交日志中 我的提交树看起来像 R A B C D E HEAD 我想删除 B 和 C 条目 以便它们不会显示在提交日志中 但应保留从 A 到 D 的更改 也许通过引入单个提交
  • Git:文件“已更改但未更新”

    已更改但未更新 是什么意思 这些文件位于 git 中 它们已被修改 但是当我运行 git status 时 这些更改显示在 已更改但未更新 而不是 要提交的更改 下 On branch master Changes to be commit
  • Git Hook - 在我推送到 github 后让服务器拉取

    我有一个本地存储库 并且我在实时服务器上设置了另一个存储库 www site com projects ProjectA 我想要实现的目标非常简单 在我推送到 GitHub 后 我想要存储库位于www site com projects P
  • Git hook:如果创建了新分支,则将新文件添加到存储库

    我正在编写一个 git hook 它检查是否创建了新分支 如果是 则将一些预定义文件添加到该新分支的存储库中 一些配置文件 然而 由于分支实际上正在创建过程中 所以我的逻辑失败了 目前我正在这样做post receive钩子 看起来像这样
  • 使用 ssh-keygen 创建 SSH 密钥不会创建 .ssh 文件夹

    我正在尝试使用 msysgit 创建我的公共 私有 rsa 密钥对 我运行这个命令 ssh keygen C email protected cdn cgi l email protection t rsa 一切看起来都很好 我收到消息了
  • 如何存储和计算版本控制历史记录?

    考虑这个简单的 python 代码 它演示了一个非常简单的字典版本控制设计 def build current history current for action key value in history assert action in
  • 设置 Git osxkeychain 错误

    我正在设置 Git 并且正在关注http lifehacker com 5983680 how the heck do i use github http lifehacker com 5983680 how the heck do i u
  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器
  • gitlab:带有大型存储库的 git clone https 失败

    当尝试通过 https 克隆大型存储库 700MB 时 git 失败并显示 c git projects gt git clone https git mycompany de fs git Cloning into fs Username
  • 如何使用和理解wso2 git仓库?

    我刚刚开始对wso2感兴趣 我正在寻找移动设备管理解决方案 所以我测试了 wso2 EMM 但我发现了一些限制 我想知道是否可以自己实现 我的问题是我完全迷失在 wso2 git 存储库中 有没有我错过的指导书或逻辑 如果有人帮助我解决这个
  • 将各种提交合并为一而不合并

    是否可以加入各种提交 这是我的情况 我的应用程序在 OSX 10 6 和 10 7 中运行 我已经修复了 10 6 的一些内容 然后提交了 更改为 10 7 并再次修复修复程序 以便它们兼容 然后再次提交 然后返回到 10 6 并再次检查并
  • 为什么我使用某些 git 命令后终端变得无响应?

    我经常 真的每次 使用该命令后git log我的终端对进一步的输入没有响应 这是在 OSX 上 是否有一个我不知道的命令将使终端再次激活 而不是仅仅退出终端并重新开始 您正在使用一个无需滚动即可显示日志的程序 很可能less 可以通过按q
  • Git 合并删除文件

    这是第二次发生这种情况 当我进行合并时 我后来意识到正在合并的分支中的一些文件不再位于正在合并的分支中 最新的例子是我们有一个功能分支 我一直在合并主开发分支中的更改 合并后我们丢失了很多文件 并且它们现在不存在于功能分支中 为什么会出现这
  • IntelliJ Git 集成 - git --version 空输出

    我目前正在尝试使用 IntelliJ 2016 2 的 Git 集成 但每当我将其指向可执行文件时 我都会遇到以下问题 这在技术上并不会阻止集成工作 但它确实会导致更新索引等问题 我正在运行 Windows 7 完全全新安装 但我在以前的
  • 在单独的终端屏幕上显示 git diff 和 git log 输出

    设置新的开发环境后 我遇到了一个奇怪的 git 行为 我不记得过去见过 我习惯于git diff and git log在终端中创建一个新屏幕并在其中显示其输出 什么less默认情况下 我用它作为我的寻呼机 然后我可以退出并返回到之前的终端
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • VS2013 - GIT 不工作

    我最近安装了VS2013 每当我尝试使用 GIT 执行任何操作时 我都会在输出窗口中收到以下两条消息 libgit2 引发错误 类别 未知 错误 本机库未提供错误消息 该问题可能主要出现在远程存储库获取中 在克隆远程存储库之前 请打开远程

随机推荐