2012-05-29 68 views
12

我們目前正在清理我們的git repo,因爲有一些荒謬的分支和標籤是不需要的。如何刪除git標籤並通過git pull將其傳播給其他人?

我們所做的分支部分,但標籤部分被證明是麻煩。

我們刪除了遙控器上的樹枝,並要求我們的團隊在當地的回購協議做了git pull --prune以去除所述分支。

的問題是,似乎沒有成爲一個方式與標籤做到這一點。我們可以很容易地遠程刪除標籤,但是當我們執行git pullgcremote prune時,我們無法將該更改傳播到其他本地回購站。

如何做到這一點任何想法?

或者我們只是不得不阻止人們使用git push --tags,直到他們重新克隆回購?

回答

10

You can't。在遙控器上刪除的標籤將不會在本地從pull/fetch/etc中刪除。

+0

球。儘管乾杯! –

+1

@StephenMelrose,因爲您似乎與所有感興趣的人聯繫,您可以要求他們刪除所有標籤,然後執行'git fetch --tags $ remote'。當然,這裏假設他們沒有自己的本地(非推送)標籤,但是這可以通過準備一個腳本來解決,該腳本會刪除所有「已知的,全局的」標籤,然後要求所有參與方在他們當地的回購。 – kostix

4

我不認爲有一個簡單的方法來刪除與推的標籤,但你可以指導你的人刪除其所有的局部變量

for tag in $(git tag); do git tag -d ${tag}; done 

,然後從主倉庫取同步那些應活着。

我看不出有任何理由在默認情況下,推動標籤,在Git標籤都還堅不可摧,通常只針對發佈類似的重要里程碑完成。

+0

可怕的哈克,但工程。通過這個。乾杯。 –

+3

哈克?羅。差遠了。 –

10

在舊版本的Git這似乎很好地工作:(但這不再工作作爲Git版本1.9.0或更新版本)

git fetch --tags --prune 

+0

沒有工作... – Haris

0

因爲「混帳提取--tags --prune「不適合我我把車的解決方案放入別名,對我來說工作正常:

# update tags 
ut = "!sh -c 'for tag in $(git tag); do git tag -d ${tag}; done; git fetch --tags'"