2011-09-07 68 views
2

我是git的新用戶,實際上是一個新的用戶到內容跟蹤/源代碼控制。我大約在6個月前開始使用git,並且真的很喜歡它。我把東西放在我的git倉庫裏,我不應該有

愚蠢地,我一直在追蹤我的完整項目,包括包含每個項目所需庫的lib目錄。其中一些是我無法分發的庫。我打算與同事分享我的git回購,並且我的一些項目可能會在某些時候成爲FOSS。能夠分享我的git回購對我很重要。

如何在不丟失歷史的情況下從混亂中走出困境?

另外,它很煩人,因爲如你所知,某些版本的軟件需要某些版本的庫或者它們不會編譯。如果我不能把庫放到git倉庫中,這意味着我可能不得不手動修補,以便讓我的程序的特定提交版本再次運行。換句話說,這是一個巨大的麻煩。

我誤解了有關使用git的一些問題嗎?這似乎是一個巨大的問題。

編輯:我可以很容易地想象大型項目被非自由材料提交所污染的場景。我可以想象這個問題很長一段時間都未被發現,所以這看起來像是分佈式內容跟蹤的致命弱點。我也認爲每次你想調查一些小的變化是完全不可行的時,必須手動查找和使用數十個庫。因此,這使得git在實踐中只能用於完全免費的項目。我錯了嗎?

+0

FWIW當你的程序需要特定版本的庫時,通常你會在README文件中給出這些版本說明或者其他的東西,但是讓其他人自己實際獲得這些庫。您不需要分發運行程序所需的所有內容。 –

+0

你可以使用[git-filter-branch](http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html)編輯你的歷史記錄,但要小心,因爲這個是一個複雜的命令。 –

回答

2

首先,依賴性跟蹤。如果這些庫是開源的,包括它們作爲子模塊可以幫助它們保持更新。但是,因爲這聽起來不像你需要的那樣。如果他們可以很容易地獲得,免費但不公開,我以前使用過Maven,取得了相當不錯的成功。 http://maven.apache.org/我發現它在Windows中並不能很好地工作。

爲了您的git的問題,試試這個:提交

  1. 結帳其中添加的庫。
  2. 從該提交創建分支,即哎呦。
  3. 的git室射頻庫
  4. 添加到庫的.gitignore
  5. git的櫻桃挑選..most_recent_commit
  6. 如果這是你現在想要的項目的版本:
    1. 耶!繼續。
    2. 拍攝。 。 。你在一個分支上的好事!
  7. 結帳主
  8. 的git的復位 - 硬commit_from_other_branch
  9. 提交
  10. 強制推送,老師傅將被孤立。 git push -f

要非常小心你如何做到這一點,你可能會認真搞砸你的存儲庫。這不會完全刪除庫的引用,因爲第一次提交仍然會引用它。有人可能有另一種使用補丁工具的方法,可能會更好。 。 。

相關問題