3

我对 git 很陌生,所以我的存储库中积累了一些杂物和错误。现在我想再次清理它。

我的情况如下。我已将图片添加到我的存储库,但分辨率太高。后来我用较小的版本替换了它们,但它们仍然存在于我的历史中。我是唯一一个曾经在那个仓库工作过的人,所以重写历史的问题是可以容忍的。我的问题是我在添加图片和替换它们之间做了其他提交。这可能吗?如果是,那怎么办?

为了进一步说明我所拥有的:

04f9ac3 replace big pictures with small pictures
503c2b6 make a useful commit
8ab463d add big picutres
3d2a5a5 initial commit

以及我想要实现的目标:

XXXXXXX combined commit of the "add big pictures" and "replace with small pictures"
503c2b6 make a useful commit
3d2a5a5 initial commit

我发现了很多关于“挤压”提交的信息,但如果我理解正确的话,它会将“相邻”提交结合在一起。我想做的更多的是选择某些提交并将它们组合起来。我希望这对任何人都有意义。:)

4

2 回答 2

3

您可以使用git rebase --interactive来获取交互式 rebase,您可以在其中重新排序提交并压缩它们。你会像这样调用它git rebase -i 3d2a5a5,你可能会看到类似的东西

pick 8ab463d add big picutres
pick 503c2b6 make a useful commit
pick 04f9ac3 replace big pictures with small pictures

您现在可以编辑此列表,因此它看起来像

pick 8ab463d add big picutres
squash 04f9ac3 replace big pictures with small pictures
pick 503c2b6 make a useful commit

当你保存这个文件并让 rebase 启动时,它会添加“big picutres”提交,然后在“replace”提交中压缩,并给你一个编辑器来重写这个压缩提交的提交信息。保存该消息后,它将在此之上添加“进行有用的提交”。

于 2013-03-13T23:17:13.400 回答
0

你想打壁球,你是对的。但是,您不能压缩变基中的第一个提交。:(

$ git log
04f9ac3 replace big pictures with small pictures
503c2b6 make a useful commit
8ab463d add big picutres
3d2a5a5 initial commit

$ git rebase -i 3d2a5a5    <--- Choose a commit BEFORE the one you don't want
squash 8ab463d             <--- First commit in rebase cannot be squashed :(
pick 503c2b6
pick 04f9ac3
于 2013-03-13T23:20:40.213 回答