如何从github repo的特定子目录中删除旧的提交历史记录?

如何从github repo的特定子目录中删除旧的提交历史记录?,git,github,rebase,pull-request,github-flavored-markdown,Git,Github,Rebase,Pull Request,Github Flavored Markdown,我不是使用git/github的专家,所以很抱歉我的术语可能不正确 前提: 我正在开发一个github repo,它是第三方主repo的一个分支,创建/更新一些文档标记文件,所有这些文件都包含在子目录路径/to/wiki中 因此,直接在github web界面上工作,因为我需要观看和升级.md文件,查看web呈现文档的视觉效果, 我直接在github页面上做了很多微提交: 问题: 现在我完成了所有更新,我想向外部主回购做一个拉式请求,请求完成的工作,可能避免分享几十次提交更新的无用提交故事 因此

我不是使用git/github的专家,所以很抱歉我的术语可能不正确

前提: 我正在开发一个github repo,它是第三方主repo的一个分支,创建/更新一些文档标记文件,所有这些文件都包含在子目录路径/to/wiki中

因此,直接在github web界面上工作,因为我需要观看和升级.md文件,查看web呈现文档的视觉效果, 我直接在github页面上做了很多微提交:

问题: 现在我完成了所有更新,我想向外部主回购做一个拉式请求,请求完成的工作,可能避免分享几十次提交更新的无用提交故事

因此,对于wiki目录中的每个.md文件,我只想发送编辑的最终结果版本,而不是所有提交故事

也许这个git选项叫做rebase?不管怎样,我不知道我到底多么希望修剪

我无法仅维护特定目录或特定文件中包含的最终结果就删除旧提交,例如,此文件:

顺便说一句,有一种直接在github页面上实现的方法吗

或者我必须在我的电脑上克隆回购协议

$ git clone https://github.com/solyaris/ChatScript
$ git ... # commands to delete commit history
$ git push to github 

你想做的是坏习惯。Git意味着保存所有疯狂的修订,并将它们发布给其他人,以利用它们来排除某些修订或在其上构建。如果维护人员想在他们的提交日志中包含您的疯狂行为,这取决于他们,如果他们不想,那么这就像git pull-squash一样简单

但我会以任何方式回答你的问题

不,那不是你想做的。相反,您应该在本地存储库上启动一个新分支,并在一次提交中将所有更改放在该分支上

git checkout -b changes-for-pr master
git diff master..branch-with-my-work-so-far -- path/to/subdirectory | git apply
git add .
git commit

顺便说一句:GitHub虽然非常适合托管,但对于Git来说却是一个非常糟糕的前端。就连Git的创始人Linus Torvalds也对它大加抨击。

顺便说一句,也许我发现了一个解决方案,很抱歉回答了自己的问题

如果我完全理解阅读此github帮助文档:

当在github web界面上合并pull请求时,主repo所有者可以使用挤压标志,这似乎正是我想要接受的更新,只保留一次提交,而不是提交的全部内容。这就解决了我的问题


对吗

诚恳地说,我不认为在这种情况下有什么不好的做法:在我看来,避免所有的微提交几乎是一种礼貌/清洁的形式。无论如何,据你所知,有一种简单的方法就是使用github web前端来完成你提到的挤压,由主节点所有者在我拉req时完成?你应该把你的意见留给你自己。这很有争议,也无助于回答这个问题。我更喜欢在我的历史中有代表一个逻辑变化的委员会。但有时这是不可能的——我必须离开电脑,去做一些真正混乱的事情。。一天后,我拿起它,以某种可用的形式,然后我将重写历史。让历史乱七八糟是有好处的,它只会使跟踪引入bug的更改变得更加困难,并使指责文件变得单调乏味。你对GitHub的看法也是如此。@georgio robino我最近创建了一个聊天脚本标签,但这似乎不是专门针对它的,所以我不会在中编辑它。但是,正如我所看到的,你是一个投稿人,经常在网上回答CS问题,你能在问题出现时帮我标记一下吗?非常感谢:@Matt Fletcher,第一点:我当然同意。第二点:我到底要做什么来标记问题?谢谢,如果有人问了一个关于聊天脚本的问题,但没有将其添加为标记,请编辑该问题以将其包含在内。希望标签能贴上;我以前没有添加过标签,所以对它了解不多,但我读过一些stack exchange站点在每月没有新问题的情况下删除标签的文章。干杯!顺便说一句,我认为StackOverflow对于ChatScript来说是完美的,即使直到现在他的发明者Bruce Wilcox和CS社区仍然使用Chatbots.org论坛:小点:ChatScript可能比ChatScripty更好。是的,我也是其中的一员,但没有在上面发布任何内容。我可能会在未来对回购协议进行各种更改/PRs,因此我相信我们会保持沟通。我相信stackoverflow标签是小写的!