使用git rebase忽略顽皮文件

时间:2019-01-26 00:52:18

标签: git gitignore rebase

我有一个GitHub存储库,主要存放.tex个文件,并使用Makefiles编译所有文件以创建.pdf s。在此存储库中,.gitignore文件用于忽略与此相关的一些编译文件,尤其是.pdf本身。现在,我还有一些不是编译.tex文件的结果的文件,因此git不应忽略它们。我最近在minted文件中添加了一些代码(使用.tex包),该代码创建两种特定类型的编译文件,即.pygstyle.pygtex。这些文件是我不想保留在存储库中的文件,因此我已经将它们添加到.gitignore中了-在已经将它们添加到上一次提交中之后:(。

我想找到我要键入的命令,以便以此分支为基础建立基础,而不会从源代码管理中删除.gitignore中的所有文件,因为其中有些{我想保留的{1}}个文件,但是我上面提到的编译文件应该忽略。

我尝试重新建立正常的基础,只是找出那些无法忽略的丢失文件;从那时起,我一直漫不经心地重新建立新的分支机构,但几乎没有成功。

理想情况下,将有一种方法可以将.pdf文件追溯应用到引入“顽皮文件”的提交中,而无需删除手动添加的其他文件以绕过.gitignore

我曾考虑过不使用变基(例如,简单地将.gitignore应用于所有文件的子集),但是我想保持整洁并改用.gitignore

1 个答案:

答案 0 :(得分:1)

如果您的顽皮文件很小,我建议您简单地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进行操作。