2017-03-04 42 views
1

這可能是重複的,但在通過關於創建發佈的GitHub help page並經過許多帖子之後,我還沒有找到我要找的內容。在git中選擇發佈的內容

我曾經在git工作了一段時間,經常發現自己處於master的部分內容已準備好可以共享的情況,但其他人仍然需要進一步完善,進一步測試或重構。我可以創建一個新的分支並刪除我現在不想發佈的內容,但這仍然保留了他們的歷史記錄,對於下一個版本,我將無法簡單地將改進與新內容的子集合並在一起每次都從一個全新的分支開始。

我真正想要做的是選擇準備發佈的文件夾和文件,只篩選這些文件的相關歷史記錄,以及重新整理這些新歷史記錄之外的任何不在發行版中的內容。我意識到這是一種「重寫歷史」的形式,但有沒有辦法用git來做到這一點?如果沒有,創建具有相關歷史記錄的版本的「正確」方式是什麼,以後可以合併?

+1

「創建具有相關歷史記錄的發行版,並可在稍後進行合併」。這實際上是分支的定義。我不明白你關心每個版本的分支。 –

+0

我可以問爲什麼你不想要發佈分支中未發佈的作品的歷史? – oyvind

+0

@oyvind我認爲你和馬特是正確的,它並沒有任何實際的區別,但我會覺得它更清潔,我認爲歷史也會更容易管理/存儲,如果有辦法修剪任何東西對指定文件的一個子集無關緊要,並且在這個新的歷史記錄之上重新分配未選定的內容。在回顧特定版本的標籤時,它也會使其更加清晰。 – Sheljohn

回答

1

嘗試使用子目錄過濾器和修剪空開關的git filter-branch。確保你知道你在做什麼,因爲這是一個非常有侵略性的命令。閱讀整個手冊頁面https://git-scm.com/docs/git-filter-branch。至於將其餘的歷史放在首位,我認爲衝突的數量將完全禁止,除非你的歷史特別短。另外,如果您正在討論重新開發主開發分支,那麼當開發人員將新版本引入其各自的本地克隆時,會造成麻煩。

+1

謝謝,我想櫻桃採摘到一個新的分支(正如Steven的答案中所述)可能是創建發佈的最佳和最傳統的方式。 [這篇文章]中的最後一張圖(http://stackoverflow.com/a/5968622/472610)顯示了一個典型的使用git的項目開發,我希望它在實踐中是有序的,或者我只是在製作線性進展。 :) – Sheljohn

+0

我不確定排除分支中的文件是很常見的。如果你可以多說一些這些部分版本的外觀,我可以多一點幫助。也許,如果您要獨立發佈部件,最好使用單獨的回購或每個部件的單獨發佈分支,因爲您不需要排除文件,因爲每個分支都可以知道要從中釋放哪些部分。很多都可以通過發佈腳本來解決:-)。 – oyvind