繁体   English   中英

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

[英]how to remove the old commits history from a specific subdirectory of a github repo?

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

前提:我正在开发github存储库(第三方主存储库的一个分支),创建/更新一些文档(markdown文件都包含在subidirectory path/to/wiki )。

因此,直接在github Web界面上工作(因为我需要观看和升级.md文件以查看Web渲染文档的视觉效果),所以我直接在github页面上做了很多“微型”提交: https:/ /github.com/solyaris/ChatScript/tree/master/wiki

问题:现在我完成了所有更新,我想向外部主存储库pull request ,完成工作,可能避免共享数十次提交更新的无用“提交故事” ...

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

也许这个git选项被称为“ rebase”? 无论如何,我不知道要实现“修剪”的精确程度。

我无法删除包含在特定目录或特定文件(例如,此文件: https : //github.com/solyaris/ChatScript/blob/master/README )中的旧提交(仅维护最终结果) 。 md )?

顺便说一句,有一种方法可以直接在github页面上执行此操作?

或者我必须在PC上克隆仓库

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

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

如果我很了解阅读此github帮助文档:

https://help.github.com/articles/about-pull-request-merges/

当在github Web界面上合并拉请求时,主回购所有者能够使用“ squash ”标志进行合并,这似乎正是我想要的(接受仅保留单个提交而不是整个提交内容的更新)。 那解决了我的问题!

是吗

您想做的是不好的做法。 Git的目的是保留您所有疯狂的修订,然后发布它们以供他人使用(以排除某些修订或在其之上构建)。 由维护人员决定是否要在提交日志中包括您的疯狂,如果不这样做,则就像git pull --squash <remote> <refspec>

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


不,那不是您想要的。 相反,您应该在本地存储库上启动一个新分支,然后只需一次提交即可将所有更改放入该分支

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来说却是一个非常糟糕的前端。 甚至Linus Torvalds(Git的创建者)也以此为基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM