- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我在 bitbucket 上有这个已有两年历史的 C#
存储库。直到昨天它才具有 .gitignore
- 我知道,晚了。
这是一个个人项目。
我可以使用 .gitignore
作为基础清理 repo 吗?所以工作人员会有效地删除 .gitignore
说不应该存在的任何东西?
最佳答案
Notice: First of all you better take a backup of your git repository, since it always can go wrong badly (the exact behavior of
git
can depend on all kinds of settings/... so it is not completely predictable what the result of the process will be, so better be safe than sorry). It is sufficient to copy the directory to some other location: there is a (hidden).git
directory in that directory containing the history, tags, etc.
如果您只想删除新提交的内容,那么您不关心存储在文件系统历史记录中的文件,您可以删除它们:
git rm --cached -r .
git add .
rm --cached -r .
表示您将从 git 存储库中删除所有内容,但将文件保留在文件系统中。您以递归方式执行此操作,因此所有文件都不再是存储库的一部分。接下来,您再次将所有文件添加到存储库中,但是 .gitignore
文件将不会重新添加那些应该被忽略的文件。
如果您想从所有以前的提交中删除这些文件,我建议使用 bash 脚本。它可能不是最有效的。
现在我们可以做的是列出所有应该至少被忽略一次的文件:
git ls-files --exclude-standard --others --directory --ignored
我会首先检查列表 并检查是否没有应该保留 的文件。相应地更新 .gitignore
,只有当这些文件都不再出现时才转到下一步。
如果列表中没有更多文件要保留在存储库中,则可以运行此脚本:
#!/bin/bash
for f in `git ls-files --exclude-standard --others --directory --ignored`
do
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '$f'" --prune-empty --tag-name-filter cat -- --all
done
该脚本在历史记录中至少迭代一次要忽略的文件,并通过所有提交执行文件过滤。请注意,这些文件不会从您的文件系统中删除。但是您将丢失这些文件的历史记录。
此外,对于标准的 .gitignore
(例如可以在 GitHub 上找到),必须要小心一些,因为我听说在运行 < em>Windows。
一些提交可能会消失,因为这些提交的唯一区别涉及不再是存储库一部分的文件。例如,如果您忽略 *.log
文件并且日志包含日期;可能只有 file.log
文件被修改了。如果您删除该文件,则修改该文件的提交也将被删除。
关于git - 使用 gitignore 清理 Git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358374/
引用the online docs : If the pattern does not contain a slash /, Git treats it as a shell glob pattern
我想让 git 忽略名为“Doxyfile”的文件,我添加了一个 .gitignore 文件,但它仍然会尝试跟踪文件。 我在下面添加了我的步骤,我是否遗漏了一个步骤? $ ls -a .git
我知道有很多这样的问题,但没有人解决我的问题。我想要一些非常简单的东西 - 忽略特定文件夹下除一个文件之外的所有文件和文件夹。这是我尝试的方法: #Ignore public/typings/* #A
我一直在使用 git,但仍然对 .gitignore 文件路径感到困惑。 那么,.gitignore文件中以下两个路径有什么区别? tmp/*public/documents/**/* 我可以理解 t
这可能吗? git update-index --assume-unchanged 不是解决方案,必须跟踪忽略的文件。要么创建子模块。 例如 cat .customgitignore(1|2|3...
我的实际问题 我希望只有目录结构根目录中的 .gitignore 文件会忽略文件,即子目录中的 .gitignore 文件不应忽略文件。 要清楚 我不想 gitignore 其他 .gitignore
当我输入 git status 时,我收到以下消息: Changes not staged for commit: (use "git add ..." to update what will b
$ cat ~/.gitconfig [core] editor = vim excludefiles = /home/augustin/.gitignore $ ca
有没有办法忽略 gitignore 规则但仍然 checkin .gitignore 文件?或者也许我们应该使用不同的实现? 这不是一个关于如何应用 gitignore 规则或“为什么我的规则不能正常
我的目录结构如下: static admin ajax_upload books css font media robots.txt templ
为什么 git 不忽略 .gitignore?这是错误还是功能?我看不出有任何人愿意分享 .gitignore 文件的原因。不得不在 .gitignore 中添加 .gitignore 感觉有点讽刺。
我正在和别人合作一个项目,根目录下有一个.gitignore是提交给git的。如果我想在 root 中创建一个我希望 git 忽略的新文件或目录,但我不想将它放在公共(public) .gitigno
如果我有一个全局的 .gitignore 设置并且项目在 repo 中有 .gitignore,那么 repo 中的那个是否覆盖全局的或者它是否添加规则示例: 如果全局有: *.exe *.ini 并
是否可以将 .gitignore 文件添加到 .gitignore 本身? .gitignore 虽然没用 我不想在编辑的文件中看到它 最佳答案 .gitignore 文件的目的是防止在项目上协作的每
我们在这里进行了一次内部讨论,我们对在包含大量文件的项目(如 CMS)上使用 .gitignore 的最佳实践感到有些困惑。 方法一 方法 1 是有目的地 .gitignore 构建标准的所有文件。这
在 https://github.com/codyc4321/Flashcard-Generator我有一个文件,我想将 HTML 生成器拆分为它自己的函数。 该文件位于 js/main.js 中。此
我正在为 Gr 制作游戏。和我的 friend 一起学习了 12 门编程类(class)。我在本地存储库中有在 Blender 中制作的 3D 模型。 Blender 文件以 .blend 结尾,它也
如果我有set a global .gitignore file我的项目也有一个 .gitignore 文件,它们都包含不同的内容,我的项目中是否使用了它们的条目? 最佳答案 是的。 他们将一起忽略他
在项目根目录中,我有一个 .gitignore 文件,它会忽略除 gitignore 文件之外的所有内容。这是文件的内容: **/* !.gitignore 然后在 implementation/xm
我想知道是否可以在存储库中包含named .gitignore 文件,例如: Composer.gitignore Node.gitignore 以上两个示例都显示在 GitHub 的 gitigno
我是一名优秀的程序员,十分优秀!