使用 git rebase 忽略恶意文件
Ignoring naughty files with git rebase
我有一个 GitHub 存储库,主要保存 .tex
文件,Makefile 编译所有文件以创建 .pdf
s。在此 repo 上,.gitignore
文件用于忽略与此相关的一些编译文件,最显着的是 .pdf
s 本身。现在我还有一些文件不是编译 .tex
文件的结果,因此不应被 git
忽略。我最近在我的 .tex
文件中添加了一些代码(使用 minted
包)来创建两种特定类型的编译文件,即 .pygstyle
和 .pygtex
。这些文件是我不想保留在 repo 中的文件,因此我将它们添加到我的 .gitignore
--在之前的提交中已经添加它们之后:(.
我想找到我必须键入的命令,以便以一种不会从源代码管理中删除 .gitignore
中的所有文件的方式重新设置此分支,因为有一些我想保留的.pdf
,但是我上面提到的编译文件应该被忽略。
我试着用正常的方式rebase,却发现了那些无法忽略的丢失文件;从那以后,我一直漫无目的地重新定位到新的分支机构,但收效甚微。
理想情况下,有一种方法可以将 .gitignore
文件追溯应用到引入 "naughty files" 的提交中,而无需删除手动添加的其他文件以绕过 .gitignore
。
我考虑过不使用 rebase(例如,通过简单地将 .gitignore
应用于所有文件的子集),但我想保持它的干净并改用 git rebase
。
如果您的顽皮文件很小,我建议您直接 git rm
处理它们并提交结果。从那时起,.gitignore
将按照您的意愿工作,因为这些文件将不再存在于您将要处理的提交中。
如果你的顽皮文件很大,你可以使用git filter-branch
重写没有这些文件的历史记录。如果您选择这条路线,这个问题将有所帮助:How to remove/delete a large file from commit history in Git repository?
有关一些附加信息,.gitignore
文件仅影响 git add
中发生的事情以及将沙箱的当前状态与当前提交进行比较的操作。当你变基时,你要求 Git 按原样(默认情况下)重新应用给定的提交及其拥有的文件和补丁。您必须编辑提交以从中删除文件,上一段中链接的问题解释了如何手动或通过 git filter-branch
.
执行此操作
我有一个 GitHub 存储库,主要保存 .tex
文件,Makefile 编译所有文件以创建 .pdf
s。在此 repo 上,.gitignore
文件用于忽略与此相关的一些编译文件,最显着的是 .pdf
s 本身。现在我还有一些文件不是编译 .tex
文件的结果,因此不应被 git
忽略。我最近在我的 .tex
文件中添加了一些代码(使用 minted
包)来创建两种特定类型的编译文件,即 .pygstyle
和 .pygtex
。这些文件是我不想保留在 repo 中的文件,因此我将它们添加到我的 .gitignore
--在之前的提交中已经添加它们之后:(.
我想找到我必须键入的命令,以便以一种不会从源代码管理中删除 .gitignore
中的所有文件的方式重新设置此分支,因为有一些我想保留的.pdf
,但是我上面提到的编译文件应该被忽略。
我试着用正常的方式rebase,却发现了那些无法忽略的丢失文件;从那以后,我一直漫无目的地重新定位到新的分支机构,但收效甚微。
理想情况下,有一种方法可以将 .gitignore
文件追溯应用到引入 "naughty files" 的提交中,而无需删除手动添加的其他文件以绕过 .gitignore
。
我考虑过不使用 rebase(例如,通过简单地将 .gitignore
应用于所有文件的子集),但我想保持它的干净并改用 git rebase
。
如果您的顽皮文件很小,我建议您直接 git rm
处理它们并提交结果。从那时起,.gitignore
将按照您的意愿工作,因为这些文件将不再存在于您将要处理的提交中。
如果你的顽皮文件很大,你可以使用git filter-branch
重写没有这些文件的历史记录。如果您选择这条路线,这个问题将有所帮助:How to remove/delete a large file from commit history in Git repository?
有关一些附加信息,.gitignore
文件仅影响 git add
中发生的事情以及将沙箱的当前状态与当前提交进行比较的操作。当你变基时,你要求 Git 按原样(默认情况下)重新应用给定的提交及其拥有的文件和补丁。您必须编辑提交以从中删除文件,上一段中链接的问题解释了如何手动或通过 git filter-branch
.