为什么git私有标记和相关的私有代码被上传到公共存储库?

为什么git私有标记和相关的私有代码被上传到公共存储库?,git,bitbucket,Git,Bitbucket,我维护了一个git树,其中包含许多分支,有些是私有的,有些是推送到bitbucket的公共存储库。我最近无意中发现,如果我在私有分支中标记提交,那么使用 git push --tags 导致私有分支中的所有提交,私有标记作为悬空标记上载。这暴露了大量从未打算公开的私有代码,导致我删除了整个存储库,并重新上传了它,而没有出现令人不快的标记,以尝试解决问题 我已经创建了一个示例git树,在一个单独的私有分支中只有两个公共提交和一个私有提交,显示了推送标记是如何推送私有标记和关联的私有提交的: PU

我维护了一个git树,其中包含许多分支,有些是私有的,有些是推送到bitbucket的公共存储库。我最近无意中发现,如果我在私有分支中标记提交,那么使用

git push --tags
导致私有分支中的所有提交,私有标记作为悬空标记上载。这暴露了大量从未打算公开的私有代码,导致我删除了整个存储库,并重新上传了它,而没有出现令人不快的标记,以尝试解决问题

我已经创建了一个示例git树,在一个单独的私有分支中只有两个公共提交和一个私有提交,显示了推送标记是如何推送私有标记和关联的私有提交的: PU1和PU2是在主分支上制作的标签,PR1是在专用分支上制作的标签

这是不是正确的行为,想要推送标签会使它推送所有标签,即使它们不是master的一部分?对我来说,这似乎违反直觉

这是不是正确的行为,想要推送标签会使它推送所有标签,即使它们不是master的一部分?对我来说,这似乎违反直觉

标记与master或任何其他分支无关。标记只是对提交的引用,实际上您可以使用``push--Tags将它们“加载”到远程`

“专用”分支是指未发布到远程存储库的本地分支。
“Public”分支是远程存储库中的分支


最佳做法 如果您使用标记,则更喜欢带注释的标记
git-tag-a
,而不是“常规标记”
git-tag
。它将使用与提交相同的信息创建带注释的标记,以便您以后可以查看它


从文件中:

git推送--跟随标签
您还可以使用
git push--follow标签来推送所有标签

--跟随标签 在不使用此选项的情况下,推送将被推送的所有引用,并推送远程缺少但指向可从被推送的引用访问的提交ish的引用/标记中的注释标记

这也可以通过配置变量
push.followTags
指定
有关更多信息,请参阅中的
push.followTags

--标签 除了命令行上明确列出的参照规范外,还将推送
refs/tags
下的所有参照

这是不是正确的行为,想要推送标签会使它推送所有标签,即使它们不是master的一部分?对我来说,这似乎违反直觉

标记与master或任何其他分支无关。标记只是对提交的引用,实际上您可以使用``push--Tags将它们“加载”到远程`

“专用”分支是指未发布到远程存储库的本地分支。
“Public”分支是远程存储库中的分支


最佳做法 如果您使用标记,则更喜欢带注释的标记
git-tag-a
,而不是“常规标记”
git-tag
。它将使用与提交相同的信息创建带注释的标记,以便您以后可以查看它


从文件中:

git推送--跟随标签
您还可以使用
git push--follow标签来推送所有标签

--跟随标签 在不使用此选项的情况下,推送将被推送的所有引用,并推送远程缺少但指向可从被推送的引用访问的提交ish的引用/标记中的注释标记

这也可以通过配置变量
push.followTags
指定
有关更多信息,请参阅中的
push.followTags

--标签 除了命令行上明确列出的参照规范外,还将推送
refs/tags
下的所有参照

Fom:

--标签

除了命令行上明确列出的参照规范外,还将推送
refs/tags
下的所有参照

所以,是的,
git push--tags
推送所有标签。

Fom:

--标签

除了命令行上明确列出的参照规范外,还将推送
refs/tags
下的所有参照


因此,是的,
git push--tags
推送所有标签。

这是正确的行为,因为您正在上传
所有标签。如果您希望只上传与某些“公共”分支相关联的标记,那么请明确列出这些标记,如

git push some_remote some_public_tag

这是正确的行为,因为您正在上载
所有
标记。如果您希望只上传与某些“公共”分支相关联的标记,那么请明确列出这些标记,如

git push some_remote some_public_tag

你将需要持有两种不同的回购协议,一种是公共回购协议,另一种是私人回购协议。永远不要将私人回购推送到公众或比特桶回购(除非你做得非常小心。我建议你做点什么(除非没有电子邮件),这样你就可以确保没有任何私人回购被转移)。你需要保留两种不同的回购,一种是公共回购,另一种是私人回购。永远不要将私人回购推送到公众或bitbucket(除非你非常小心。我建议你做点什么(除非没有电子邮件),这样你就可以确保没有私人交易被转移)。