美文网首页
利用git filter-branch删除git log里的大文

利用git filter-branch删除git log里的大文

作者: 小马将过河 | 来源:发表于2023-05-21 23:02 被阅读0次

最近项目里的代码再给codeup上推的时候,提示单个文件有200M的,提示使用Git-LFS,但是我觉得是个测试文件,没必要,而且试了试用这玩意也挺麻烦,以后clone库也会很大,于是目标就是把log里的大文件记录删除。

于是不小小搜到了git-filter-branch,发现还挺牛逼,试用成功,解决了问题,再次记录一下实践。

问题现状

 $ git push hcgit dev --force
  Enumerating objects: 8152, done.
  Counting objects: 100% (8152/8152), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (3987/3987), done.
  Writing objects:  82% (6720/8152), 151.04 MiB | 844.00 KiB/s
  Writing objects: 100% (8152/8152), 525.79 MiB | 670.00 KiB/s, done.
  Total 8152 (delta 3780), reused 7040 (delta 3089), pack-reused 0
  remote: Resolving deltas: 100% (3780/3780), done.
  remote: 推送失败,以下文件大小超过单文件 200MB 的系统限额:
  remote: Blob ID  | Size(MB) | File name
  remote: -------------------------------
  remote: 0e758bba | 399.42   | 0a326316-4d6a-445b-867d-d6f26771ad9e-00000066117006-118413ac-0000-0000-4444-463547545348-20230221091617728795.2109.spectrum
  remote:
  remote: 大文件请使用 Git-LFS 管理,使用说明: https://help.aliyun.com/document_detail/206887.html
  To codeup.aliyun.com:hc/41674-redcreation/22jcdsj_java.git
   ! [remote rejected] dev -> dev (pre-receive hook declined)
  error: failed to push some refs to 'codeup.aliyun.com:hc/41674-redcreation/22jcdsj_java.git'

操作

1. 查看前15个大文件

  $ git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk '{print$1}')"

  d7051ee827ea6beba442b82cbee58c691d23b75a doc/jcdsj/protocol/TC5-WG8-2018-053-2018-1373T-YD-超短波监测管理一体化平台技术规范+第3部分:设备操作服务(送审稿).pdf
  e48876576e4a204c782649664bdca13d0316458b flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/DWDll/result.txt
  81a0013b70fc72fb8c12db80ebd15fc87e51210e flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/xhfxDLL/libippse9.so
  f452de044f7507bcb028db76de20c1a5533bc1f8 flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/xhfxDLL/libippsl9.so
  c651d7011c83cedbc403a06d231e8463a4444f43 flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/xhfxDLL/libippsm7.so
  47d0573522b566c3fdd868329a81739a71ef9f99 flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/xhfxDLL/libippsn8.so
  9f38b34b7435809a69c3841409e59a0f6bc34ad4 flink-tutorial/src/main/java/cn/cetc22/calculate/location/dll/xhfxDLL/libippsy8.so
  a88fd60fe66882f6cbc1d5a9610699c5ae1dc85d freqmonitor/src/main/resources/static/js/echarts/echarts.js
  d873059b01f562af8d17500141ef859d4a149089 freqmonitor/src/main/resources/static/js/echarts/echarts.js.map
  0617c7ee877ca6a61b5ef3b918f1f7a97be58533 lib/codec-lib-0.1.0-SNAPSHOT-standalone.jar
  5ccc9b192caa4ecd11f032e37a717e45126ab649 lib/phoenix-client-hbase-2.4.0-5.1.2After.jar
  0e758bbab5a1dadf3b21d37eee579ad5474414a2 upload/0a326316-4d6a-445b-867d-d6f26771ad9e-00000066117006-118413ac-0000-0000-4444-463547545348-20230221091617728795.2109.spectrum
  76fdb307c55adef9aeb3efbf8f506cf609857f35 out/artifacts/flink_tutorial_jar/flink-tutorial.jar
  5c4807cdecfeff6a1441e643aa2f73d55882e872 lib/websocket_server_jar/netty-all-4.1.18.Final.jar
  2fb4d3bcf8463d41c48717c09f161caf421f6ac3 flink-tutorial/src/main/resources/lib/Algms-0.4.11.jar

2. 删除文件夹

upload文件里是上传的不应该push的测试文件,当时upload没有加到gitignore。

这一步删除git log里包含upload的文件夹。

 $ git filter-branch --tree-filter 'rm -rf upload' --tag-name-filter cat -- --all

  WARNING: git-filter-branch has a glut of gotchas generating mangled history
           rewrites.  Hit Ctrl-C before proceeding to abort, then use an
           alternative filtering tool such as 'git filter-repo'
           (https://github.com/newren/git-filter-repo/) instead.  See the
           filter-branch manual page for more details; to squelch this warning,
           set FILTER_BRANCH_SQUELCH_WARNING=1.
  Proceeding with filter-branch...

  Rewrite 50bbc30ab715ddcc27b1702c75e8d8aeb2caa0ab (253/254) (93 seconds passed, remaining 0 predicted)
  Ref 'refs/heads/master' was rewritten
  Ref 'refs/remotes/origin/master' was rewritten
  Ref 'refs/remotes/origin/dev' was rewritten
  WARNING: Ref 'refs/remotes/origin/master' is unchanged
  Ref 'refs/remotes/origin/new_branch' was rewritten
  Ref 'refs/tags/v0.1' was rewritten
  v0.1 -> v0.1 (c762af9f9e53763c10820a77102a701baa997573 -> a05d7d92cb5b8425a21a5012c6ea697b56cb9df4)

3. 回收内存

下面几个命令

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now

实践:

# mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:05:00]
  $ rm -rf .git/refs/original/

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:06:40]
  $ git reflog expire --expire=now --all

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:06:45]
  $ git fsck --full --unreachable
  Checking object directories: 100% (256/256), done.
  Checking objects: 100% (8164/8164), done.
  unreachable commit 80807dcd86a5f7403977796b906e9d34e33a84d3
  unreachable tree ba00125e7c91de2e5cbd1dd490c40ab9d3ef0508
  unreachable tree fc8097c03378f0f67dd8b795e7d5fa77ed3f325d
  unreachable tree a801d5d5b81deb4e85f078d8d880b931820b4786
  unreachable commit 2d02fcab07e091d85e574944ebcae9e83015cd4c
  unreachable commit 4c02d178fa3ba0c710f4f52fcebe60fcaa76f070
  unreachable commit f2822c9b5df868f13b0804713a18e128dea3c867
  unreachable commit c3836f665865af25117dc2bd9b5ae4649b8b7181
  unreachable commit 74842686a4fd71d8eb28487d1d9397eacb1e6564
  unreachable tree 2505687916803cea63a7fb65081ee0be656521b3
  unreachable commit 8d855f5c1f5c52346b1ff3ecf20f625a21d1a028
  unreachable tag 330624829f9550c5c899d39eaeb8d297825848f7
  unreachable commit 8106e088f358f0677321379314af9b61fcd1f990
  unreachable tree a2067cb316108ed67c32c8648872ecfaa1dceaf0
  unreachable commit fe0684214209d36975eb3c5edeeeb8551922f3fc
  unreachable commit d08725a8ffcc7404c6ecfb58da1cb575b59170b6
  unreachable tree 57888fd5127ecbadd73b805a3b25a91c90583333
  unreachable tree 6a08a85115464fbd327d5dbe88470412e5de0093
  unreachable tree 5989676ec299475666961a23dd02c00a3db21a81
  unreachable commit f9894269839f169432fc9f2124e7e4bda3c2ef6b
  unreachable tree f9894dd60767982b950a17d6eb874e49752b5a86
  unreachable tree 210ab2dbb02be509e1fc76d042eb20c4d2e9c980
  unreachable commit 7f0bae1b0de154fd3ebaf81b9a1cd422b7995129
  unreachable commit a58bb6147e1006e718faeba9f3448cc99588b22d
  unreachable tree 048c52fa0496f3facf5b5797966a881d23c8edc1
  unreachable commit 638c6b0e9699aa4fcb74fc6865e28f66dbc2c08a
  unreachable tree 6a0cb26d697b698975da19030f3ff1e3c8f9a015
  unreachable tree 888c9166d3aafd2855e671111761e456223d5082
  unreachable commit ea8ce2b7b22e3e0757ce9275d34f88858a04d0e4
  unreachable commit 0a8dbaf531899515360a157bfea20ce6c9e40b01
  unreachable commit a28e0b476f724a109ce645ebadf21e0ebab658ba
  unreachable commit fd8efd47d794177c43ab94537bd1e1fe5542f19a
  unreachable tree 5210a38d33bd3cc01017a20275ceebaaf548233a
  unreachable commit 8592ff881b445815c85a21e562201aba324323ee
  unreachable commit c69229a1ab6fd5d0f596b8fdd3ca6fd32b2a6abc
  unreachable tree d293adb828f09c1f3159c5ffba19fd29a25be584
  unreachable commit 0d94a07633318c40d47e7beb84bc47e65b9da0b2
  unreachable tree 4a153bbc266380c2cebf307274fa337d7088c2fb
  unreachable commit 3c96b2cf300408e6eadfe7fa9a040b829069eedb
  unreachable tree 471645028b8994a0c94faf5ceada75df44de3cc2
  unreachable tree 9696da415e21156d5bce2c4c55d88c3df7961499
  unreachable commit be962a6f6387e489599334a49f17463ec0d736ce
  unreachable commit 3997605ac876b9afabc2777eb828e26a448d1a79
  unreachable commit f61760e3238dd9df1ce6bc4817f231995cca95d8
  unreachable tree 8098ce321ffffd2594fae66c21e04a46bb4e1e6c
  unreachable tree a4181c170381767ba814ac8658fdd8f2bb1b21e5
  unreachable commit 9c9a46d730041e4aa6388b6c578ecbea09dde152
  unreachable commit e59a78c7ef31b64a14b0e7ea35d88987f62d4925
  unreachable tree fd1a8082cb64ae6c7e4e309dfb9082fe0481aa03
  unreachable commit da9bb13c02617c1b2eeff58756ddccdb513291c3
  unreachable tree 8e1c61208a6c70a1cbda036c7759b4201c69914d
  unreachable commit 939c2434c0f43779c124e63b8aa1e2e52f3725f4
  unreachable tree b11ccfd1f7226428df829ae83c195414a0a1045b
  unreachable commit d51df8ab543263ce16da68dc6c4893d27ae2be42
  unreachable tree df9d3c3646907480c80093d1f6d70f8040287750
  unreachable commit 029ed13c4cb5007d2efb361b31d28177b683dd95
  unreachable tree 7320fc144fef7e6c78adfd85bc529cbb0e38a946
  unreachable tree cda0bf20e09ef56f13a37d8c96c92be3d908d487
  unreachable commit a9212a364b3f80d10f34561fee0fef0444878c46
  unreachable commit 3922647a3f0de6551d012e832c1b022d546a552e
  unreachable tree 8422f46d31c77d6009e2aea82bcdc50e54688c67
  unreachable tree 1da4b31facde3b88c44452faec6ae7ba04a3a93c
  unreachable tree 6224e4f7a3b2af0010acec5fb1c9c2cdb065403c
  unreachable tree 67249a73e3783891311b3c57fc350666f94791f0
  unreachable commit 94a4ceede9bb6acf9883a958d9ed7b595b1234d6
  unreachable tree bfa46e5f9bca037bf4b035d1c1c553c3df96cf29
  unreachable commit 05a67dc3b72ad2518d203644175c0a9631344a00
  unreachable tree 57a6004e52efebde854f74b423990233c9cb29e6
  unreachable commit a02650e380ba84d10cc8f2057662e1650c601e11
  unreachable tree 0927da17a90d85305d48db65930288834537d74d
  unreachable commit 5327a9a8cd04b018f8ba045958b74ffb84989fcd
  unreachable commit 45287128522a651abfe0ad68a49f2407541086a4
  unreachable commit 20aa9e05e58cae3a3594fd12613f9b2a49e02195
  unreachable tree 57aa34644a7a9bb4884cfeb87fe128c2b4e94b72
  unreachable tree 3c2b4ad3482977602205c49ee5c459be4bbfcd4f
  unreachable commit eaabdf129c8d77f9ff4bf05f7c6efed6f997518b
  unreachable tree a6ace1643b98331e6001a4597d9e541c9838aa1c
  unreachable commit d4ac3b91a6fbf91c98d5af57637deaf0569ac33e
  unreachable commit efad513aa975f516c9ed46ab19500f10c2ed5fd5
  unreachable commit a1aec5c7489e5d08d44cd3a9882623dd81995ed9
  unreachable commit 09afdb55ddc9431a4ab3fdefb39c85543632da2d
  unreachable commit 8d2f6c5b3c4efc8fa533985d50c6f8369494b0f8
  unreachable tree 59b0e12e0b0bbb08814c40e7c1586e5d884faa79
  unreachable commit 13b18f0f033ca8ca07fd9cc26435fc7c43c74130
  unreachable tree cd3180e4741944af31a18a06d66f775654d8fc63
  unreachable commit 2fb2e56660adae24785a9c0f87b1f595a3a85e7f
  unreachable commit dd32b70b8f3c5ee683d0c1ef0a76524132556555
  unreachable commit 67b345f914b14eb129f8d396fa3c6c039979d3f5
  unreachable commit ccb4f224c548d155e15e9d45ae42b15b2e335fda
  unreachable tree 7e351bb544d31b383c8dc2220667e8c1adc6623f
  unreachable tree be365d8c12364c58d62f883dd22cedbffd41da1a
  unreachable commit c13654eb20367764f3f180db52414743109da49c
  unreachable commit dd36823bfc77ad70080df9156012320ca067f4c7
  unreachable commit a837ccd96c81a4d42342a23bd1afa530f32e9551
  unreachable tree 3638ad5fdb5e75c489812e2d43afa1e7d41c4f22
  unreachable tree 2e391fb7c92936b971ab735b3eaea7f688dfe055
  unreachable commit e8b95d9cfb9e871131492416d8764103880ff5c7
  unreachable tree b33af65cc5c8fa8fb0461e9fe06b6cda6b5746d1
  unreachable commit 50bbc30ab715ddcc27b1702c75e8d8aeb2caa0ab
  unreachable commit 733ba337e14c84a1c858bbd2d76bae6b1cf9c543
  unreachable commit 68bd4c4452f565afe3e5f4acba0d2a6793467ebc
  unreachable commit a4bd65c3a8d1f07e23fb88b3094886c451c8ad25
  unreachable commit 753f0fb318475e02e31fa62dfd710ba4cc5ae0ec
  unreachable commit 61c067452db0761dc095c7ad202b61b5ef16a6ec
  unreachable tree 21c24b840ad2da7f456be990c65c0749d947f57e
  unreachable tree 4c4236a5ad816fe41eb662fbf40c84077e13dccd
  unreachable commit df4242db5ae0924957989caf9ef5d88abf6ea869
  unreachable commit e1c3c55c636c55a41b49ac4dec1ef5a8bac5b6ba
  unreachable tree 88484132d0e0906323035e5d4ff7ede34426e92f
  unreachable commit 91c8aeba0db18d9c0c7846d5a78aac4e0802b8b5
  unreachable tree cfc8e9b18eb5ef34c6ef398bc1092c14b9692f6c
  unreachable commit 1849fac1dbfec58fddfee45ef42fb501222df800
  unreachable blob 37c95de06c89a330f1fb23959d29de2590041902
  unreachable tree a6ca5b7519645252f80cd2871c228996d0bfe2fc
  unreachable commit 474bff04d26e962a5ccf9ca565bfd059af0fdb21
  unreachable commit c7cb7898c606e007c3be2203661ef73e68e6be54
  unreachable commit 2e4cc88c2c53e61aeaf035d165fa44ffbf8e4daa
  unreachable tree a2cc4633e7f545f62902a4b5bedede899883564e
  unreachable commit 74cdb6c4dbad8c9403355c5bbafdf4c4953d807a
  unreachable commit 564e403b9ff59f015fc2d9ea1d6a59b0a37309f0
  unreachable commit db4ec9a5344d9726e8731f9e8b2a1ce3e88f166e
  unreachable tree fbce356b45f4a0129be52f9a2f7f812e4919df33
  unreachable commit 294f12e61a027b0847dd472bd62f51d00207e64f
  unreachable tree cccf998a4e3c9cca05d8b56a71d324442e9ac4ee
  unreachable commit ca5038aa706673571053c2c631fb729e569d71fb
  unreachable tree 3051e0196fcbf33c44172e1f5655169cc3e4a87b
  unreachable tree 7bd36d73d83e8ce4dbcc2e0b02054afaa289cec1
  unreachable tree 7e532fd852ffce2779f2183989743653f72902c9
  unreachable commit 0d542357106fb9197c12c8ca6c09e4df77028af8
  unreachable tree 41d461c1ac91c702c5550f980db8220a425f735c
  unreachable tree add4d293fd8baa68f9ce11cb9dca9296fa74329f
  unreachable tree 3c55e0815f3f2e884234ab907a8bb640e3e15908
  unreachable commit 35560a6c2353bba763432fdb281ee2dda6484a68
  unreachable blob 81d62478fb4b4ff8ada672dcfd79fd45c4f61422
  unreachable blob eb56e81f55309389d61f86b5ede34de9064c298c
  unreachable tree 235775c86a8647701f86cfb638897d3180234e4d
  unreachable tree 51d71eedcdd235a962190ab858f5171c6924a3eb
  unreachable commit f0d701e3c3fd5047b50b93db118db3c6df9af668
  unreachable tree f3d7af6bd11d790ca84e04272afb8e0e9196e402
  unreachable tree 10583739a0f030682d5f3629e205b526bf62dfb8
  unreachable tree 02593e47148e2cf54f9e9e66aff4142f9fa5b00c
  unreachable commit 3859324352287daa6d426ecf98272b65e75d92db
  unreachable tree 435928a110cad104f28025cb849cad00eaf517a2
  unreachable commit 7359ff84cab5d3c31da233fc5a99779e75fc6925
  unreachable tree bfda4012fdec42b6c123bcdba26f01b02d2f9e04
  unreachable commit 1e5b25839a77b274e455c9b02b99f47678c98009
  unreachable commit dbdb3f1a6ecab22d2d8c9082b5235c94630d90c7
  unreachable tree 275c8f57f3d7f1d3fec891f3950d55aa2213b9da
  unreachable commit 9edc2db8c41e02f2dd1c97ecf7a245c73528260b
  unreachable tree cd5df7c1ea1141cb666a4b1d7ff327fd708c6f70
  unreachable commit 025e0e1e887449bb25f567948472f8eb43f85003
  unreachable commit b7de244ed207b1fcdc28137ed3c7ca6abfbc587f
  unreachable tree 17dfc099bab06f946def2ed5924a0ab35e1bb2ac
  unreachable tree 1c5f90dc73dbdce2655ef17c0ce015b35e7c6258
  unreachable commit 3adfbab59d3ad87292eba4d781609419cf0cd6e7
  unreachable commit 9f600d2afdb004af33b22a8989516185f102f08b
  unreachable commit 7be10e8d2693119796cf8d5031f6c5b4baa9d05d
  unreachable commit fe615c6674faf6300be89c488ae68593882bf14e
  unreachable commit 6662fd958c4fdf82abb7fe7ddf03c7eebef8c327
  unreachable commit 826249fa2a2df053817ee468fe4a54e5a1bcdb7d
  unreachable commit c762af9f9e53763c10820a77102a701baa997573
  unreachable commit fce28a776043971b8e2ce06b011891b6d3db881d
  unreachable commit a8e3ee0bdc97e61935d28f59e5c43747bc2dae92
  unreachable commit 7e64221b44d5dad16f713f662f5c33ade4b4a674
  unreachable commit 50657ad9b893e83c27f4ebff4c82e068ae729ae9
  unreachable commit ed65b8ec0b50aebbe53b822df06b4cbf2340d4a4
  unreachable commit 1c66b65d78ffb08e8faa311429ffd8256b1dd5bd
  unreachable commit 69661eeef5d9f0d5d28c928296c0ac2289c497b5
  unreachable commit f0660505580bf771096b66fabfee18c74ffa53dc
  unreachable tree 0267f387d9c3f446cf7b3defe513a5e8ac6615ac
  unreachable tree 8ce775a3b154520ce2d145aa6d5f87568c1132d9
  unreachable commit df676d01a9ee8950e3fb805471e2357b6c1f29bd
  unreachable commit 08687803268bfb5920b6200690b69fd9850b5ad5
  unreachable blob 47e88e0a6fb8fb2619b701cf331225d4bc79b325
  unreachable commit cfe979c532d4bf748a70bbb3f37213c145eb807f
  unreachable commit 05ea417df834ae1d6276cdd61b75e5f849630b83
  unreachable tree 6f6a7f22984a76bd866c0f475d38455b6328f271
  unreachable commit d96a88d3ce5700fc94b8adb59a305951d4af5ba4
  unreachable commit 28ebc557a62e6c3b0b0154237c75c0a3c520a751
  unreachable commit 2f6bad9ccc6ff9c9999e5c8de53455abe51697ee
  unreachable commit 92eb8ac57225f241c3a210d90e87445696f89bbd
  unreachable commit 99ebe0322ac2ba8c11adcd656eb3bc1714d352f9
  unreachable tree 676d7e11b530ecd10a51682fb31299f4ae2e445b
  unreachable tree a56e6dcbf15343b14fb7d9885581de255fad24d4
  unreachable commit bdeee317c5a58ffe936999dc7437f8f66e8a459f
  unreachable commit e2ee2a3b55aff979ff886edb4d4415cf7cabb8fe
  unreachable commit 96ef182b7f0f69cea581ac36b0791e2f74e411cf
  unreachable tree de6fb0f02dd588c9d5104128d1f7d25b8519da9e
  unreachable commit b5f07b4c43249e21ecf13d92f34fd10c6689bc8c
  unreachable commit c870a7ab1bbb4a3dd612308b75ab3c17e442ed76
  unreachable commit a0720c1c3624047f0aa1d24985b14db89a7c353e
  unreachable tree d87230b2f3e9f240e6c62d34e17ea436707955db
  unreachable commit a5737abb3e0c43ebec2dc4d924fbccabb7e467b8
  unreachable commit ab73c77e3d6e9b90d8e512aab60c81cc8d3d35ff
  unreachable tree bb73cf698909e70f4fb6290a446d58d14eed0895
  unreachable tree def350da9d4817e59f9c09b781cad5c76fff35d9
  unreachable blob 0e758bbab5a1dadf3b21d37eee579ad5474414a2
  unreachable commit 2575883814dc67ca2fc81b39bba289117e623004
  unreachable commit 29f5de0f25df8d9685140b3298418ad7d93d5869
  unreachable commit 4975f6482c18e15e9379e998f57a395a33fca5ed
  unreachable commit ec7725a15456bc166301234f61fd6f1c6ab1daba
  unreachable commit 0a78d0ec36cc516690d4e06fb31161a79765d3e0
  unreachable tree 4f78ce94d357de081deef9ff01af3c37d70cf946
  unreachable tree 1f795a090e758bfab2a9e172395df9f36c65c799
  unreachable blob 4cf981ea872ca89645c01a3b980f088bf5081ec9
  unreachable commit 07fa51ea7c68aeb1edc617c04627d088248ad567
  unreachable tree 61fab67e3901ff191a794944de526b34e9e58fa3
  unreachable commit c9fdc36cc69b976ef11317cbd36082192f2a912e
  unreachable tree 4d7f1f8a93fc1f025536411c701c761c03399a9a
  unreachable blob 8c7f4eac447083955b505b95232dbd9e79ab2da3

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:06:53]
  $ git repack -A -d
  Enumerating objects: 8149, done.
  Counting objects: 100% (8149/8149), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (3571/3571), done.
  Writing objects: 100% (8149/8149), done.
  Total 8149 (delta 3570), reused 7953 (delta 3499), pack-reused 0

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:07:03]
  $ git gc --aggressive --prune=now
  Enumerating objects: 8149, done.
  Counting objects: 100% (8149/8149), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (7069/7069), done.
  Writing objects: 100% (8149/8149), done.
  Total 8149 (delta 4152), reused 3655 (delta 0), pack-reused 0

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:07:13]
  $ du -sh .git
  254M  .git

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:07:20]
  $ git push --force --all
  Enumerating objects: 7421, done.
  Counting objects: 100% (7421/7421), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (2819/2819), done.
  Writing objects: 100% (7421/7421), 249.08 MiB | 56.96 MiB/s, done.
  Total 7421 (delta 3710), reused 7242 (delta 3604), pack-reused 0
  remote: Resolving deltas: 100% (3710/3710)
  remote: Counting objects: 2310, done
  remote: Updating references: 100% (1/1)
  To http://192.168.3.244:8010/r/2023JCDSJ/jcdsj-backend.git
   + 07fa51e...df73248 master -> master (forced update)

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:07:45]
  $ tig

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:master o [11:07:59]
  $ git checkout dev
  branch 'dev' set up to track 'origin/dev'.
  Switched to a new branch 'dev'

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:09:25]
  $ du -sh .git
  254M  .git

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:09:30]
  $ git filter-branch --tree-filter 'rm -rf upload' --tag-name-filter cat -- --all
  WARNING: git-filter-branch has a glut of gotchas generating mangled history
           rewrites.  Hit Ctrl-C before proceeding to abort, then use an
           alternative filtering tool such as 'git filter-repo'
           (https://github.com/newren/git-filter-repo/) instead.  See the
           filter-branch manual page for more details; to squelch this warning,
           set FILTER_BRANCH_SQUELCH_WARNING=1.
  Proceeding with filter-branch...

  Rewrite 2d02df295743edd1dad5ff18c80eddccb5dd7fb1 (253/254) (75 seconds passed, remaining 0 predicted)
  WARNING: Ref 'refs/heads/dev' is unchanged
  WARNING: Ref 'refs/heads/master' is unchanged
  WARNING: Ref 'refs/remotes/origin/master' is unchanged
  WARNING: Ref 'refs/remotes/origin/dev' is unchanged
  WARNING: Ref 'refs/remotes/origin/master' is unchanged
  WARNING: Ref 'refs/remotes/origin/new_branch' is unchanged
  WARNING: Ref 'refs/tags/v0.1' is unchanged
  v0.1 -> v0.1 (a05d7d92cb5b8425a21a5012c6ea697b56cb9df4 -> a05d7d92cb5b8425a21a5012c6ea697b56cb9df4)

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:11:14]
  $ rm -rf .git/refs/original/

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:11:24]
  $ git reflog expire --expire=now --all

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:11:28]
  $ git fsck --full --unreachable
  Checking object directories: 100% (256/256), done.
  Checking objects: 100% (8149/8149), done.
  Verifying commits in commit graph: 100% (254/254), done.

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:11:32]
  $ git repack -A -d
  Enumerating objects: 8149, done.
  Counting objects: 100% (8149/8149), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (2917/2917), done.
  Writing objects: 100% (8149/8149), done.
  Total 8149 (delta 4152), reused 8149 (delta 4152), pack-reused 0

  # mahaiqiang @ mahaiqiangdeMacBook-Air in ~/Downloads/jcdsj-backend on git:dev o [11:11:42]
  $ git gc --aggressive --prune=now
  Enumerating objects: 8149, done.
  Counting objects: 100% (8149/8149), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (7069/7069), done.
  Writing objects: 100% (8149/8149), done.
  Total 8149 (delta 4159), reused 3962 (delta 0), pack-reused 0

4. 提交变动

 $ git push --force --all
  Enumerating objects: 903, done.
  Counting objects: 100% (903/903), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (352/352), done.
  Writing objects: 100% (740/740), 6.50 MiB | 38.47 MiB/s, done.
  Total 740 (delta 395), reused 643 (delta 305), pack-reused 0
  remote: Resolving deltas: 100% (395/395)
  remote: Counting objects: 3547, done
  remote: Updating references: 100% (1/1)
  To http://192.168.3.244:8010/r/2023JCDSJ/jcdsj-backend.git
   + 50bbc30...2d02df2 dev -> dev (forced update)

5. push到阿里云

 $ git remote add hcgit git@codeup.aliyun.com:hc/41674-redcreation/22jcdsj_java.git

 $ git push hcgit dev --force
  Enumerating objects: 8137, done.
  Counting objects: 100% (8137/8137), done.
  Delta compression using up to 8 threads
  Compressing objects: 100% (2909/2909), done.
  Writing objects: 100% (8137/8137), 253.55 MiB | 1.68 MiB/s, done.
  Total 8137 (delta 4153), reused 8133 (delta 4151), pack-reused 0
  remote: Resolving deltas: 100% (4153/4153), done.
  To codeup.aliyun.com:hc/41674-redcreation/22jcdsj_java.git
   + 01e6103...2d02df2 dev -> dev (forced update)


总结

这个filter-branch的功能本次是删除了文件夹,也可以①用来删除历史记录中敏感想删除的文件,②比如删除某天前的所有log等

学无止境

git filter-branch 从历史仓库中删除文件夹

Git专题:历史记录清理:保留代码并删除一年前的提交记录

相关文章

网友评论

      本文标题:利用git filter-branch删除git log里的大文

      本文链接:https://www.haomeiwen.com/subject/lyezsdtx.html