git-filter-branch

    36熱度

    2回答

    我試圖從一個倉庫移到一個單獨的文件(稱爲foo.txt的)到另一個(無關)資料庫,保留它的歷史。 ebneter's question顯示瞭如何爲子目錄執行此操作。 taw's question有一些提示和建議,但不是一步一步的過程。 jkeating's question看起來很有希望,但沒有爲我工作。谷歌搜索在這個特定用例中空了。我正在尋找的是一個明確的命令序列來完成這一點。 命令我開始跟着順

    2熱度

    1回答

    我有一個回購協議是(開始)爲5.6G大小: [email protected] ~/repo (master) $ du -d 0 -h 5.6G . 然而,這種回購包含了一些不再需要在回購大型二進制文件。最初他們在目錄結構中的不同位置,但都被命名爲「tc.dat」。作爲「清理」的步驟,我創建了一個cruft目錄,git mv所有的人都到這個克魯夫特目錄,改變自己的名字tc.dat1,tc

    17熱度

    1回答

    我已經使用git filter-branch重寫了我的存儲庫的歷史記錄以刪除一些大的FLV文件。我主要是跟着上removing sensitive data GitHub的文章文章和類似說明在互聯網上的其他地方找到: 卸下大FLV文件: git filter-branch --index-filter 'git rm --cached --ignore-unmatch public/video/*

    22熱度

    2回答

    我試圖從我的git存儲庫中拆分出一個子項目。 但不像 Detach (move) subdirectory into separate Git repository 我沒有在它自己的子目錄中(並將其移入並執行上述操作只會生成移動後的歷史記錄)。 我克隆了一個分支,我想從中分支出子項目到它自己的存儲庫中,並刪除了子項目沒有使用的所有東西,所以基本上我可以使用它作爲我的子項目的存儲庫。 現在我想擺脫不

    7熱度

    5回答

    我們正在運行一箇中央git存儲庫(gforge),每個人都從中拉出並推送。不幸的是,一些不合適的同事決定將幾個10-100Mb的jar文件放入回購庫是個好主意。由於這個原因,我們使用的服務器已經耗盡了磁盤空間。 我們才意識到這一點,當時已經太遲了,大多數人都拉了新的巨大回購。如果問題沒有得到解決,那麼我們可以做一個重定位來分割那些巨大的提交併修復它,但是現在每個人都已經從中撤出了,那麼刪除提交的最

    1熱度

    1回答

    我有一個相當大的存儲庫(11 GB,900,000多個文件),並且在合理的時間內迭代時遇到問題。有些分析後,真正的瓶頸似乎是git的更新索引: $ time git update-index --replace $path > /dev/null real 0m5.766s user 0m1.984s sys 0m0.391s 這使得天的不堪數得到的文件列表。有什麼方法可以加快更新索

    5熱度

    4回答

    我有一個SNMP代理的項目,其中相關的MIB文件(* .smiv2文件)與它一起開發,但現在我想他們在一個單獨的git倉庫。 爲了不丟掉任何一個MIB文件的歷史,因爲他們沒有在他們現在是同一個目錄開始,我不能只使用--subdirectory-filter過濾分支,所以我嘗試了--filter-index方法的基礎上, this question。這個想法是刪除每一個不以.smiv2結尾的文件(顯

    2熱度

    1回答

    一個大的二進制文件被添加到我的git倉庫20提交前。刪除此: git filter-branch --index-filter "git rm --cached --ignore-unmatch FILE" \ --prune-empty HEAD 更改我項目歷史記錄中每次提交(〜1100)的SHA1。它確實刪除了該文件,但我希望只有少量修改的提交。有沒有辦法告訴filter-bra

    2熱度

    3回答

    我在git中有一個本地項目,其中包含一些數據(例如,例如輸入用於單元測試)。這些數據在項目過程中發生了變化,並且一度變得更大。現在,我不需要將項目恢復到該狀態,但是每當我使用git執行新的clone時,項目的大小都很大(來自所有數據更改)。 有沒有辦法以某種方式恢復我的項目刪除某些目錄歷史(例如項目/數據/),這樣只有最近的狀態被存儲?

    6熱度

    2回答

    我最近在所有本地提交中使用以下命令替換了作者,提交者和電子郵件: git filter-branch -f --env-filter ' if [ "$GIT_COMMITTER_NAME" = "oldname" ]; then GIT_COMMITTER_NAME="newname"; GIT_COMMITTER_EMAIL="newaddr"; GIT_AU