相关疑难解决方法(0)

如何通过非交互式压缩除最近的提交之外的所有提交来减少膨胀的Git仓库的大小?

我的Git repo有数百GB的数据,比如SQL备份,所以我试图删除旧的,过时的提交,因为它们会使一切变得越来越大.我需要一个快速的解决方案; 越快越好.

除了最新的提交之外,我如何压缩所有提交,而不必在交互式rebase中手动压缩每个提交?具体来说,我不想使用

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

我的回购

我有这些提交:

A .. B .. C ... ... H .. I .. J .. K .. L
Run Code Online (Sandbox Code Playgroud)

我想是这样的(在两者之间挤压的一切A,并H进入A):

A .. H .. I .. J .. K .. L
Run Code Online (Sandbox Code Playgroud)

有关如何压缩所有提交的答案,但我想保留一些最近的提交.我也不想压缩最近的提交.(特别是我需要保持前两个提交从顶部开始计数.)

git rebase git-rebase git-rewrite-history

8
推荐指数
1
解决办法
2888
查看次数

清除git日志文件

我想清除git日志文件,以便命令不git log返回任何内容.这可能吗?这是推荐的吗?

git logging clear delete-file

7
推荐指数
2
解决办法
1万
查看次数

git:跨多个提交生成单个补丁

这种情况:

  1. 我们基于现有的开源git repo(例如source-repo)创建了一个“私有” repo(例如our-repo)。

  2. 我们一直在开发代码,并已将大约20个合并到我们的仓库中。因此,仓库从“ State_Initial”移到“ State_Current”。

现在,出于业务原因,我们希望将所有开发工作移交给第三方。基于某些法律问题,唯一的选择是我们为他们提供所有更改的“单个”补丁文件。那是“ State_Initial”和“ State_Current”之间的压缩补丁。

我环顾四周,发现

git format-patch -X
Run Code Online (Sandbox Code Playgroud)

但是,它会生成“ n”个.patch文件。

有没有一种创建单个补丁文件的方法,以便如果我们基于“ source-repo”创建一个仓库并应用该补丁,它将带我们进入“ State_Current”?

git patch

7
推荐指数
3
解决办法
2320
查看次数

我应该把小型的开发工作压缩成更大的吗?

关于如何压缩git和其他DVCS的提交,也有很多问题,例如:

我的问题是,我想要压缩提交吗?我应该保留详细的提交顺序,显示功能是如何开发的,还是我应该在功能完成后将它们压缩成一个,以保持历史更清晰?

dvcs commit squash

5
推荐指数
2
解决办法
1032
查看次数

如何在不丢失子模块的情况下压缩所有提交?

我喜欢How to squash all git commits into one? 中的答案.

但是,如果我执行以下操作,我会遇到合并冲突:

git rebase --root -i
Run Code Online (Sandbox Code Playgroud)

与建议的采摘和壁球。

而且,当我失去了我的子模块(我有 5 个)时

rm -rf .git
git init
git add .
Run Code Online (Sandbox Code Playgroud)

压缩所有历史记录并将我的子模块保留在当前目录中的当前目录中的最有效方法是什么?

git git-submodules

5
推荐指数
1
解决办法
1023
查看次数

从私有 GitHub 存储库检出标签

我需要从 GitHub 克隆一个私有存储库,但我只想获得一个特定的标签(所以基本上,克隆实际上是错误的术语)。

\n\n

现在的问题是,有多种选择,但所有选择都不起作用:

\n\n
    \n
  • GitHub 提供标记版本作为存档,但无法通过curl或访问它们wget(至少我不知道如何访问)。
  • \n
  • GitHub不支持归档存储库。
  • \n
  • 我可以运行 agit clone然后运行 ​​agit checkout以获取标记指定的版本,但随后我下载的内容超出了我的需要,我处于分离头状态,所有剩余的内容都保留在磁盘上。当然,我可以手动清理它,但是 \xe2\x80\xa6 好吧,对于一项微不足道的任务来说,需要做很多工作。
  • \n
\n\n

实现我想做的事情的最佳方法是什么?

\n\n

更新

\n\n

我认为我的问题不够清楚,因此我添加了更多信息:我想要的不仅是获得由标签标记的修订版本,而且我还想删除整个历史记录。基本上,就好像 Git 从未存在过一样,我所拥有的只是我的代码的这个单一版本。有什么提示吗?

\n

git github git-clone git-checkout git-tag

3
推荐指数
1
解决办法
892
查看次数

从Git开始,让存储库的最后一次提交成为唯一的提交

我有一个包含几十个提交的Git存储库.我希望最后一次提交是唯一的提交 - 这意味着存储库的行为就像刚刚初始化并且当前文件状态是唯一的提交一样.

有没有比创建新回购更好的方法呢?

git git-commit

2
推荐指数
2
解决办法
2137
查看次数

Git——重写整个历史

我想做一件明显的坏事。我有一个项目,我是唯一的开发人员,我想把它放在 Github 上,但它到处都是非常糟糕的提交信息。我想基本上重新初始化 repo,这样当我将它推送到公共 repo 时,它就没有我的愚蠢评论。

我已经考虑过删除 .git 文件(目录?),但这似乎是错误的,但当然,我所做的事情本身也是一种可怕的做法,所以也许这真的是下注路线?

git

2
推荐指数
1
解决办法
1509
查看次数