簡體   English   中英

為什么git私有標簽和相關的私有代碼上傳到公共存儲庫?

[英]Why are git private tags and associated private code uploaded to public repositories?

我維護了一個git樹,其中包含許多分支,有些是私有的,有些是推送到bitbucket上的公共存儲庫的。 我最近無意間發現,如果我在私有分支中標記提交,則使用

git push --tags

導致將私有分支中的所有提交和私有標簽作為懸掛標簽上載。 這暴露了很多從未公開的私人代碼,導致我刪除了整個存儲庫並重新上傳它,而沒有令人討厭的標簽來嘗試解決此問題。

我在一個單獨的私有分支中創建了一個僅包含2個公共提交和一個私有提交的示例git樹,在此處顯示了推送標簽如何將私有標簽和相關的私有提交推送: https : //bitbucket.org/ckolivas/testtag/commits/所有 PU1和PU2都是在主分支上創建的標簽,而PR1是在私有分支上創建的標簽。

這是否是要推送標簽的正確行為,即使它們不是主服務器的一部分,也要使其推送所有標簽? 對我來說似乎違反直覺。

這是否是要推送標簽的正確行為,即使它們不是主服務器的一部分,也要使其推送所有標簽? 對我來說似乎違反直覺。

標簽與master或任何其他分支無關。 標簽只是對提交的引用,實際上,您可以使用“ push --tags”將其“加載”到遠程

“私人”分支是本地分支,不會發布到遠程存儲庫。
“公共”分支是遠程存儲庫中的分支。


最佳實踐

如果使用標簽,則首選帶注釋的標簽git tag -a而不是“常規標簽” git tag 它將創建帶有與提交相同信息的帶注釋的標記,以便您以后可以查看它。


git push文檔中:

git push --follow-tags

您還可以使用git push --follow-tags推送所有標簽

-關注標簽

推送所有不帶此選項將被推送的ref,並推送帶注釋的標簽到遠程丟失的ref / tag中,但指向被推送的ref可以到達的commit-ish。

也可以使用配置變量push.followTags進行指定。
有關更多信息,請參見git-config中的 push.followTags

-標簽

除了在命令行上明確列出的refspecs之外,還會推送refs/tags下的所有refs。

這是正確的行為,因為您正在上傳all標簽。 如果您只想上傳與某些“公共”分支關聯的標簽,則可以明確列出這些標簽,例如

git push some_remote some_public_tag

提供git push的文檔

--tags

除了在命令行上明確列出的refspecs之外,還會推送refs/tags下的所有refs。

所以,是的, git push --tags推送所有標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM