第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從git / GitHub的歷史記錄中刪除文件夾及其內(nèi)容

從git / GitHub的歷史記錄中刪除文件夾及其內(nèi)容

Git
狐的傳說(shuō) 2019-10-04 14:22:09
我在GitHub帳戶上的存儲(chǔ)庫(kù)上工作,這是我偶然發(fā)現(xiàn)的一個(gè)問(wèn)題。帶有安裝了幾個(gè)npm軟件包的文件夾的Node.js項(xiàng)目包在node_modules文件夾中將該文件夾添加到git存儲(chǔ)庫(kù)中,并將代碼推送到github(當(dāng)時(shí)不考慮npm部分)意識(shí)到您并不需要該文件夾作為代碼的一部分刪除該文件夾,將其推送在那種情況下,總git repo的大小約為6MB,而實(shí)際代碼(除該文件夾以外的所有代碼)僅為300 KB左右?,F(xiàn)在我最后要尋找的是一種從git的歷史記錄中刪除該軟件包文件夾的詳細(xì)信息的方法,因此,如果有人對(duì)其進(jìn)行了克隆,則不必下載價(jià)值6mb的歷史記錄,而只有這些文件才可以獲取截至上一次提交將為300KB。我為此找到了可能的解決方案,并嘗試了這兩種方法從git存儲(chǔ)庫(kù)中刪除文件(歷史記錄)http://help.github.com/remove-sensitive-data/https://gist.github.com/1588371Gist似乎在運(yùn)行腳本后在哪里工作,它表明它刪除了該文件夾,并表明修改了50個(gè)不同的提交。但這并沒(méi)有讓我推送該代碼。當(dāng)我嘗試推動(dòng)它時(shí),它說(shuō)Branch up to date但顯示對(duì)50個(gè)提交進(jìn)行了修改git status。其他2種方法也無(wú)濟(jì)于事?,F(xiàn)在,即使顯示它擺脫了該文件夾的歷史記錄,當(dāng)我在本地主機(jī)上檢查該存儲(chǔ)庫(kù)的大小時(shí),它仍約為6MB。(我也刪除了該refs/original文件夾,但沒(méi)有看到存儲(chǔ)庫(kù)大小的變化)。我要澄清的是,是否有一種方法不僅可以消除提交歷史記錄(這是我認(rèn)為唯一發(fā)生的事情),而且可以擺脫那些git一直假設(shè)要回滾的文件??梢哉f(shuō)為此提供了一個(gè)解決方案,該解決方案已在我的本地主機(jī)上應(yīng)用,但無(wú)法復(fù)制到該GitHub存儲(chǔ)庫(kù),是否可以克隆該存儲(chǔ)庫(kù),回滾到第一個(gè)提交執(zhí)行該技巧并將其推送(或者這意味著git將還有所有這些提交的歷史嗎?-又名6MB)。我的最終目標(biāo)是從根本上找到擺脫git中文件夾內(nèi)容的最佳方法,以便用戶不必下載6MB的內(nèi)容,而仍然可以擁有從未觸及modules文件夾的其他提交(這很漂亮很多))在git的歷史中。我怎樣才能做到這一點(diǎn)?
查看完整描述

3 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

我發(fā)現(xiàn)--tree-filter其他答案中使用的選項(xiàng)可能非常慢,尤其是在具有大量提交的大型存儲(chǔ)庫(kù)中。


這是我使用--index-filter選項(xiàng)可以從git歷史記錄中完全刪除目錄的方法,該方法運(yùn)行起來(lái)要快得多:


# Make a fresh clone of YOUR_REPO

git clone YOUR_REPO

cd YOUR_REPO


# Create tracking branches of all branches

for remote in `git branch -r | grep -v /HEAD`; do git checkout --track $remote ; done


# Remove DIRECTORY_NAME from all commits, then remove the refs to the old commits

# (repeat these two commands for as many directories that you want to remove)

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch DIRECTORY_NAME/' --prune-empty --tag-name-filter cat -- --all

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d


# Ensure all old refs are fully removed

rm -Rf .git/logs .git/refs/original


# Perform a garbage collection to remove commits with no refs

git gc --prune=all --aggressive


# Force push all branches to overwrite their history

# (use with caution!)

git push origin --all --force

git push origin --tags --force

您可以使用以下命令檢查存儲(chǔ)庫(kù)的大小gc:


git count-objects -vH


查看完整回答
反對(duì) 回復(fù) 2019-10-04
  • 3 回答
  • 0 關(guān)注
  • 1084 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)