簡體   English   中英

在 github 上交換“最新版本”

[英]Swap “Latest release” on github

在 github 上有一個存儲庫

這是圖表:在此處輸入圖片說明

這是我的動作序列:

  1. 進行 5 次提交並推送它們

  2. 添加標簽v0.2.0 ( git tag -a v0.2.0 -m "release 0.2.0" )

  3. 推送標簽( git push --tags origin master

  4. 通過在 github 站點上的Draft a new release按鈕發布 我選擇了v0.2.0標簽並得到了https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.2.0

  5. 為之前的提交添加一個標簽( git tag -a v0.1.0 b217332279 -m "release 0.1.0"

  6. 推送標簽( git push --tags origin master

  7. 通過使用v0.1.0標簽發布新版本並獲得https://github.com/n1k1ch/PrototypeGit/releases/tag/v0.1.0

所以, v0.1.0標簽成為最新版本

題:

我可以將v0.1.0版本與v0.2.0版本交換,使v0.2.0成為最新版本嗎?


PS谷歌搜索“github交換發布”沒有幫助


編輯:

感謝@Chris,我做到了。 一個小筆記 - 在我使用的 Windows 上:

SET GIT_COMMITTER_DATE="2014-04-02 23:00"
git tag -a v0.1.0 b217332279 -m "release 0.1.0"
git push --tags origin master

只是如果有人感興趣,在此之后我會看到以下內容:標簽 v0.1.0 重新計時

我打開v0.1.0並按下Publish release結果是:最新版本“交換”


我也收到了來自 support@github.com 的答復:

這是預期的行為。 我們將按照您的 v0.1.0 發布日期,而不是最后一次提交的日期。 這是一篇關於更改帶注釋標簽日期的好博文: http : //sartak.org/2011/01/replace-a-lightweight-git-tag-with-an-annotated-tag.html

我不知道有什么方法可以直接在 GitHub 中做到這一點。 “最新版本”是根據標簽上的時間戳確定的,而不是根據標簽名稱的語義確定的。

過去,我通過刪除有問題的舊標簽在我自己的個人項目中解決了這個問題:

git tag -d v0.1.0
git push --delete origin v0.1.0

並用假日期重新創建它:

GIT_COMMITTER_DATE="2013-12-31 00:00" git tag -a v0.1.0.1 b217332279 -m "release 0.1.0.1"
git push --tags origin master

這記錄在git-tag的聯機幫助頁中

關於回溯標簽

如果您從另一個 VCS 導入了一些更改並希望為您的工作的主要版本添加標簽,那么能夠指定嵌入標簽對象的日期會很有用; 例如,標簽對象中的此類數據會影響 gitweb 界面中標簽的順序。

要設置未來標記對象中使用的日期,請設置環境變量 GIT_COMMITTER_DATE(請參閱后面對可能值的討論;最常見的形式是“YYYY-MM-DD HH:MM”)。

例如:

 $ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1

請注意,同一聯機幫助頁強烈建議不要重復使用相同的標記名稱:

關於重新標記

當您標記錯誤的提交並且想要重新標記時,您應該怎么做?

如果你從來沒有推出過任何東西,只需重新標記它。 使用“-f”替換舊的。 你已經完成了。

但是,如果您已將內容推出(或其他人可以直接讀取您的存儲庫),那么其他人將已經看到舊標簽。 在這種情況下,您可以執行以下兩項操作之一:

  1. 理智的事情。 承認你搞砸了,並使用不同的名字。 其他人已經看到了一個標簽名,如果你保持相同的名字,你可能會遇到兩個人都有“版本X”的情況,但他們實際上有不同的“X”。 因此,只需將其稱為“X.1”即可完成。

  2. 瘋狂的事情。 即使其他人已經看過舊版本,您也確實想將新版本稱為“X”。 所以只需git tag -f again使用git tag -f again ,就好像你還沒有發布舊的一樣。

但是,Git 不會(也不應該)更改用戶背后的標簽。 因此,如果有人已經獲得了舊標簽,那么在您的樹上執行git pull不應該只是讓他們覆蓋舊標簽。

如果有人從您那里獲得了發布標簽,您不能通過更新自己的標簽來更改他們的標簽。 這是一個很大的安全問題,因為人們必須能夠信任他們的標簽名。 如果你真的想做瘋狂的事情,你需要坦白承認,並告訴人們你搞砸了。 你可以通過發布一個非常公開的聲明來做到這一點:

好吧,我搞砸了,我推出了一個標記為 X 的早期版本。然后我修復了一些東西,並再次將固定的樹重新標記為 X。

如果您弄錯了標簽,並想要新標簽,請刪除舊標簽並通過執行以下操作獲取新標簽:

 git tag -d X git fetch origin tag X

獲取我更新的標簽。

您可以通過執行以下操作來測試您擁有哪個標簽

git rev-parse X

如果你有新版本,它應該返回 0123456789abcdef..。

帶來不便敬請諒解。

這看起來有點復雜嗎? 應該是。 自動“修復”它是不可能的。 人們需要知道他們的標簽可能已更改。

如果您的項目相對孤立並且您可以可靠地聯系可能使用該代碼的每個人,我只會重用相同的標簽。

有關刪除遠程標簽的更多詳細信息,請查看此問題

除了 Chris 的回答,請注意,如果您按照他提到的方式重新發布標簽,但隨后您在 GitHub 上編輯了描述,這將使其再次成為最新標簽。

暫無
暫無

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

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