我可以丢弃来自本地 Git 存储库的 unwanted/unneeded 提交吗?
Can I discard unwanted/unneeded commits from a local Git repository?
我正在使用规范的巨大 Git 存储库的本地后代,即 Linux 内核源代码(66k 文件,870k+ 提交,3GB:喜欢它)。当然,许多任务在我的不那么弱的机器上需要很长时间,这是一个真正的问题,因为我正在更新我的(定制的)内核。
我想丢弃早于 2014 年的所有提交,这将使提交计数减少 60%:
mbpe:linux griscom$ git log --format="%ad" --date="short" | cut -c1-4 | sort | uniq -c
1 1970
2 2001
12 2002
1 2003
17 2004
16697 2005
29255 2006
33757 2007
48825 2008
52600 2009
49814 2010
56403 2011
65393 2012
71002 2013
75652 2014
75801 2015
77040 2016
80797 2017
79977 2018
58296 2019
1 2030
1 2037
1 2085
mbpe:linux griscom$
但是我仍然需要存储库来为以后的提交提供完整的功能;我需要能够像往常一样拉和推(了解某些操作由于父提交的年龄而无法完成)。
有什么方法可以处理 Git 存储库,以便删除旧的提交,或者至少不会减慢 Git 命令的速度?
你想要的是"shallow clone"。您可以在 git clone
文档 (https://git-scm.com/docs/git-clone) 中找到有关它的信息。通常我使用 depth
选项,但听起来您可能更喜欢 --shallow-since
我正在使用规范的巨大 Git 存储库的本地后代,即 Linux 内核源代码(66k 文件,870k+ 提交,3GB:喜欢它)。当然,许多任务在我的不那么弱的机器上需要很长时间,这是一个真正的问题,因为我正在更新我的(定制的)内核。
我想丢弃早于 2014 年的所有提交,这将使提交计数减少 60%:
mbpe:linux griscom$ git log --format="%ad" --date="short" | cut -c1-4 | sort | uniq -c
1 1970
2 2001
12 2002
1 2003
17 2004
16697 2005
29255 2006
33757 2007
48825 2008
52600 2009
49814 2010
56403 2011
65393 2012
71002 2013
75652 2014
75801 2015
77040 2016
80797 2017
79977 2018
58296 2019
1 2030
1 2037
1 2085
mbpe:linux griscom$
但是我仍然需要存储库来为以后的提交提供完整的功能;我需要能够像往常一样拉和推(了解某些操作由于父提交的年龄而无法完成)。
有什么方法可以处理 Git 存储库,以便删除旧的提交,或者至少不会减慢 Git 命令的速度?
你想要的是"shallow clone"。您可以在 git clone
文档 (https://git-scm.com/docs/git-clone) 中找到有关它的信息。通常我使用 depth
选项,但听起来您可能更喜欢 --shallow-since