【问题标题】:How do I keep only the latest git commit locally for all of my projects? [duplicate]我如何只为我的所有项目在本地保留最新的 git commit? [复制]
【发布时间】:2021-09-21 11:56:27
【问题描述】:

我想在我的机器上释放一些空间,我的 git 历史记录变得非常大。我有大约 20 个项目,我将完整的历史推送到 GitHub,所以我只在我的机器上保留最新的提交就足够了。

我的两个问题是:

  1. 如何从项目中删除除最新提交之外的所有提交,但只能在本地删除?我希望将所有历史记录保留在 GitHub 上,并在未来推送新的提交。

  2. Linux 中的命令行脚本会如何遍历我的项目文件夹并重复仅保留每个项目的最新提交的操作。以下是我的项目文件夹结构:

GWDG+mschmidh@UG-UFBW100-C393 MINGW64 /p/r/projects
$ ls
be-a-mapper/
biogeochem-processes/
climathur/
coding/
coding-examples/

非常感谢您的帮助!

【问题讨论】:

标签: linux git github command-line commit


【解决方案1】:

您要搜索的是git clone --depth 1

--深度

Create a shallow clone with a history truncated to the specified number of commits. Implies --single-branch unless --no-single-branch

用于获取所有分支尖端附近的历史记录。如果你 想要浅层克隆子模块,也可以通过 --shallow-submodules。

所以只需执行git clone --depth 1 https://github.com/mypersonal/repo,您的 .git 文件夹应该更小。

【讨论】:

  • 好的,谢谢,这有帮助。我现在可以rm -rf 我的整个项目,然后只使用git clone --depth 1 从 GitHub 获取最新提交。但是可以通过修改本地仓库和同时修改多个文件夹来完成吗?
  • 完成!我将您的解决方案 @Malik 合并到 bash 脚本中:第 1 行:#!/bin/bash,第 2 行:cd ~/r/projects/,第 3 行:rm -rf $1,第 4 行:git clone --depth 1 "https://github.com/my-repo/$1.git"。这首先进入文件夹,删除您选择的项目,然后仅将最后一次提交从 GitHub 克隆回本地。该脚本可以保存为keep-only-last-commit.sh 并运行,例如在 Git Bash 中使用 ./keep-only-last-commit.sh coding-examples。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多