首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩或移除一系列提交到一个(通过54000+提交)

压缩或移除一系列提交到一个(通过54000+提交)
EN

Stack Overflow用户
提问于 2022-05-20 16:22:22
回答 1查看 64关注 0票数 0

我有一个git,我做了测试,通过创建一个机器人,为我创建了大约1.5年前提交。我只是在学习git,我想通过数千次提交来看上去很酷。

本质上,我所做的是创建一个机器人,它将一行添加到文件中,添加,提交,然后推送它。所以,关于54000+提交是毫无价值的。我将如何删除所有这些提交?这是个好主意吗

没有值的提交(也就是我想要删除的提交)位于中间,从0c4068fb3开始,以42b8fae4b结束。因此,合法提交是在0c4068fb3之前和42b8fae4b之后。不具有价值的提交很容易检测到。原因是,当我创建我的机器人时,我使用了我拥有的所有提交消息,并将它们放在一个列表中,机器人会随机地从中选择这些消息,并将其用于提交消息。因此,任何重复多次提交都是没有值的提交。而且,大多数没有价值的提交也会说first commit,或者类似的东西。

因此,下面是指向提交部分的链接是假的开始部分。如您所知,提交消息不断重复。

假提交中的实际内容只是增加到一个名为bot.txt的文件的一行。所以,这些承诺中没有任何有价值的东西。

如果没有,您能告诉我如何删除所有的54000+提交并保留那些真正有价值的提交吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 17:07:47

Update:在您的特殊情况下,由于您希望删除的所有提交都是写入一个名为bot.txt的文件,并且您不希望继续写入该文件,所以最简单的操作过程是使用git-filter-repo从整个历史记录中删除该单个文件。任何只触及该文件的提交都将从新重写的回购中删除。结果将是一个类似的回购没有那些54K提交。

以前的答案:注意到这个答案可能仍然适用于你,但正如所写的,下面的答案是为了在线性历史上更一般的意义上工作。通过将选项--rebase-merges添加到下面的最终rebase命令中,您可能仍然能够在非线性历史上完成您的目标。注意,这里的主要区别是54K提交将被压缩为一个提交,如果其中包括在最后一个提交中创建并最终删除文件,则最终将创建一个退出repo的提交。

根据评论中提供的一些信息:

TTT问

对于“真正有价值的那些”,它们在历史图中的位置呢?例如,一些好的提交之前54k,一些好提交与54k混合,一些好提交后54k?

你回答了

没有值的提交处于中间,从0c4068fb3开始,以42b8fae4b结束。因此,所有具有值的提交都在0c4068fb3之前和42b8fae4b之后。

,如果你的历史是线性的,这是直接使用南瓜方法,我可以保证不会有冲突。

代码语言:javascript
复制
# Let's assume you are rewriting branch: master

# Back it up for sanity purposes
git branch master-backup master

# create a new branch
git switch -c temp-branch 42b8fae4b # start a branch from last "bad" commit
git reset --soft 0c4068fb3~1 # reset back to commit before first "bad" commit

# Note right now you have only "good" commits on your branch,
#  and all "bad" commit changes are staged, let's make 1 big commit
git commit -m "Squash all automated commits into one"

# now rebase the remaining commits on master
git rebase 42b8fae4b master --onto temp-branch

注意,删除坏的提交而不是压缩也相当简单,但您不能保证不会发生冲突(除非您碰巧知道不会发生冲突)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72322010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档