使用 git 子树签出特定标签
checkout a specific tag with git subtree
我可以在子树中使用标签吗?关注特定问题:
我有一个 git 存储库,其中包含一个外部存储库作为子树。
我可以添加这个外部存储库并从这个存储库中检出一个特定的分支。使用 git subtree pull --prefix=<dir> --squash <remote> <branch>
所选分支的更新效果很好。
现在可以签出特定标签了吗?我在子树中找不到有关标签的一些信息...
实际上任何参考都应该有效。子树的手册页显示了这一点。
git subtree pull -P <prefix> <repository> <ref>
其中 <ref>
可以是 SHA、标记或分支。基本上任何 git 都可以解析为提交。
git subtree pull --prefix repository ref --squash 如果你最初使用的是 squash。我在第一次拉动后用一个标签代替没有压扁的 ref 并得到 fatal: refusing to merge unrelated histories as the original pull had squash.
我找不到在特定标签或分支上检查我的子树的方法,使用:
git subtree pull --prefix=my_subtree_dir my_remote tags/my_tag
我得到以下日志:
From ../remotes_dir/my_remote
* tag my_tag -> FETCH_HEAD
Already up-to-date.
但实际上,什么也没做!没有一个文件是 "checkout".
我设法解决了这个问题,方法是 git 删除我的子树文件并从我的远程存储库中再次读取它们:
git rm -r lib3dsp
git read-tree --prefix=lib3dsp/ -u tags/my_tag
这是我配置子树的方式:
git remote add <my_remote>
git fetch <my_remote>
git merge -sours --no-commit <my_remote>/master
git read-tree --prefix=<my_subtree_dir> -u <my_remote>/master
git commit -m "merge <my_subtree> repo"
我可以在子树中使用标签吗?关注特定问题:
我有一个 git 存储库,其中包含一个外部存储库作为子树。
我可以添加这个外部存储库并从这个存储库中检出一个特定的分支。使用 git subtree pull --prefix=<dir> --squash <remote> <branch>
所选分支的更新效果很好。
现在可以签出特定标签了吗?我在子树中找不到有关标签的一些信息...
实际上任何参考都应该有效。子树的手册页显示了这一点。
git subtree pull -P <prefix> <repository> <ref>
其中 <ref>
可以是 SHA、标记或分支。基本上任何 git 都可以解析为提交。
git subtree pull --prefix repository ref --squash 如果你最初使用的是 squash。我在第一次拉动后用一个标签代替没有压扁的 ref 并得到 fatal: refusing to merge unrelated histories as the original pull had squash.
我找不到在特定标签或分支上检查我的子树的方法,使用:
git subtree pull --prefix=my_subtree_dir my_remote tags/my_tag
我得到以下日志:
From ../remotes_dir/my_remote
* tag my_tag -> FETCH_HEAD
Already up-to-date.
但实际上,什么也没做!没有一个文件是 "checkout".
我设法解决了这个问题,方法是 git 删除我的子树文件并从我的远程存储库中再次读取它们:
git rm -r lib3dsp
git read-tree --prefix=lib3dsp/ -u tags/my_tag
这是我配置子树的方式:
git remote add <my_remote>
git fetch <my_remote>
git merge -sours --no-commit <my_remote>/master
git read-tree --prefix=<my_subtree_dir> -u <my_remote>/master
git commit -m "merge <my_subtree> repo"