仅拉取特定标签的git pull

11

我正在寻找一条命令,以使我的生活更加轻松。

问题: 我有一个包含源代码的项目。 随着时间的推移,我推出了更多的版本:从v1.0.1到v1.0.14(最新版本)。 版本v1.0.12是我的服务器专门修补和修复的补丁, 但是该服务器实际上安装了v1.0.10(我应该从v1.0.10更新到v1.0.12)

问题: 如何创建一个命令来更新特定服务器到所需的版本v1.0.12?

我知道git pull命令,但不知道正确的使用方法,还希望有一些选项来防止合并冲突。

这是我创建的命令的起点:

$ git pull --rebase origin refs/tags/1.0.13:refs/tags/1.0.13
From http://192.168.0.12/gitlab/AF-NG/frontend-dist
* [new tag]         1.0.13     -> 1.0.13
* [new tag]         1.0.11     -> 1.0.11
* [new tag]         1.0.12     -> 1.0.12
* [new tag]         1.0.14     -> 1.0.14
First, rewinding head to replay your work on top of it...
Applying: 2.0.0
Using index info to reconstruct a base tree...
------
Falling back to patching base and 3-way merge...
Auto-merging styles/css/production.min.css
CONFLICT (add/add): Merge conflict in file.css
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort"

你想在某个服务器上检出v1.0.12吗?还是想将v1.0.12与本地未推送/共享的提交集成? - Lasse V. Karlsen
我正在寻找可以让我的生活更轻松的命令。难道不是我们都想要这样吗? - Christopher Schneider
1
git pull 的意思是先执行 git fetch,然后再运行第二个 Git 命令,通常是 git merge,但你也可以告诉它使用 git rebase。我建议避免使用 git pull。只需使用 git fetch,然后跟上你想要的命令,这种情况下似乎是 git checkout - torek
Lasse V. Karlsen:我想将v1.0.12与您本地的非推送/共享提交集成。 - Victor Orletchi
直到现在我从未使用过 git fetch(仅从 IDE 使用 git pull),而且我不清楚正确的运行命令的流程,步骤应该是怎样的。非常感谢您的支持。谢谢。 - Victor Orletchi
另一个拉取(合并方式)的示例:git pull origin master:1.0.13 - Sam
2个回答

10

我找到的解决方案是:

  1. $ git fetch -unf origin 1.0.12:refs/tags/1.0.12
  2. $ git checkout 1.0.12

如果远程更改想要与当前分支合并,则执行以下操作:$ git merge 1.0.12

请告诉我我的方法是否正确


如果你解释一下为什么在你的fetch命令中使用-unf会很有帮助。我已经阅读了这些标志的man页面,但如果你解释一下为什么要使用这三个标志,那么这个答案会更完整。我理解为什么要使用-no-tags,对于refspec部分的--force我有一点理解(也许),但对于--update-head-ok选项不太确定。 - undefined

6
您需要使用git checkout来检出您想要的标签。这将使工作目录与创建标签时相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接