我已经将一个远程Git存储库克隆到了我的笔记本电脑,然后我想添加一个标签,所以我跑了
git tag mytag master
Run Code Online (Sandbox Code Playgroud)
当我git tag在笔记本电脑上运行时,mytag会显示标签.然后我想将它推送到远程存储库,所以我在所有客户端都有这个标签,所以我运行git push但是我收到了消息:
一切都是最新的
如果我去我的桌面并运行git pull然后git tag没有显示标签.
我还尝试对项目中的文件进行微小更改,然后将其推送到服务器.之后,我可以将更改从服务器拉到我的台式计算机,但git tag在台式计算机上运行时仍然没有标记.
如何将我的标签推送到远程存储库,以便所有客户端计算机都可以看到它?
我知道这git push --tags是一个单独的操作原因git push.推动标签应该是一个有意识的选择,因为你不想意外推动标签.没关系.但有没有办法将两者结合在一起?(除了git push && git push --tags.)
我已成功制作,提交并推送更改到中央git存储库.我现在意识到我要标记所有文件的当前版本.所以我这样做:
git tag -a 0.5
Run Code Online (Sandbox Code Playgroud)
这成功了.但现在我尝试了一下git push,我被告知没有什么可以承诺的.如何将新标签推送到中央存储库?
(注意git tag显示标记0.5,但仅在本地)
Git的默认行为不是将标记从本地存储库推送到关联的远程存储库.在本回答中,解释了如何为单个存储库更改此行为.
我的问题是,为什么这是Git的设计行为?特别是设置自动推送标签的缺点是什么?
当我的同事告诉我他已经将它们推到仓库中并且它们出现在仓库中时,我在尝试获取新创建的标签时遇到了麻烦。直到我使用 git fetch 时,我才可以获得新标签,并实际通知我创建了一个新分支。我知道 git pull 基本上是 git fetch 和 git merge 所以我想知道为什么它没有得到最新的更改。这里分两种情况:
git pull origin dev
From ******.****.*****/*******
* branch dev -> FETCH_HEAD
Already up-to-date.
git fetch
From ****.****.com:*******/*******
ae06d29..958f332 master -> origin/master
* [new branch] task-Q -> origin/task-Q
* [new tag] demo_5-21 -> demo_5-21
* [new tag] demo_5_27 -> demo_5_27
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我有几个标签引用来自本地分支和远程跟踪分支的提交,或这些提交的祖先。
origin我想在运行后删除对分支和标签的引用git fetch:
git remote prune origin --dry-run
但输出表明它会修剪我的本地标签,甚至是我手动创建的标签,而不是fetch从任何远程编辑的标签:
* [would prune] origin/git-svn
* [would prune] origin/ignore/some_branch
* [would prune] refs/tags/MyLocalTag
* [would prune] refs/tags/MyLocalTag2
Run Code Online (Sandbox Code Playgroud)
为什么 git 试图修剪我的本地标签(即使是那些指向没有上游的本地分支的标签)?
如果你只能使用一次标签(通过提交唯一),我该如何处理标签" Version 7.3"中的7次提交?
我讨厌GIT没有修改版本号(如SVN :)).
我猜一个子问题是:
"控制"版本号的最佳做法是什么(ex修订版,所以我想major.minor在每个提交中保存并且在每个分支中确定(我为每个小部分制作> = 1个分支)).
第一个问题有一个事实答案(我认为).
第二个是更好的最佳实践调查.
非常感激!我从stackoverflow FTW学到了很多GIT!
如果我标记正在处理的提交,然后将更改推送到另一个存储库,那么我了解到我也可以推送标记对象。我可以创建未推送的标签吗?例如,轻量级标签是否从不推送,但标签对象始终如此?