我把以前由 Git 跟踪的文件放在.gitignore 列表中. 但是,文件在编辑后仍然显示在 git 状态。
当前回答
如果您创建了 gitignore 文件,使用命令如 echo node_modules >>.gitignore,它不会工作。
窗口终端存储文件在 UCS-2 LE BOM 和 git 似乎不接受它。
您可以通过在笔记本中打开并使用 UTF-8 编码重新存储。
此分類上一篇
它现在工作。
我认为他们需要纠正这一点,因为做echo“filetoignore” >>.gitignore实际上看起来非常有用
其他回答
git ls-files -c --ignored --exclude-standard -z | xargs -0 git rm --cached
git commit -am "Remove ignored files"
这取消了被忽略的文件列表,从指数中删除它们,并执行了变更。
答案来自Matt Frear是最有效的IMHO. 下面只是一个PowerShell脚本给那些在Windows只删除文件从他们的Git存储库,符合他们的排除列表。
# Get files matching exclusionsfrom .gitignore
# Excluding comments and empty lines
$ignoreFiles = gc .gitignore | ?{$_ -notmatch "#"} | ?{$_ -match "\S"} | % {
$ignore = "*" + $_ + "*"
(gci -r -i $ignore).FullName
}
$ignoreFiles = $ignoreFiles| ?{$_ -match "\S"}
# Remove each of these file from Git
$ignoreFiles | % { git rm $_}
git add .
使用 git rm --cached 命令不会回答原始问题:
你怎样要强迫吉特完全忘记(一个文件)?
事实上,这个解决方案会导致文件在运行 git pull 时在存储库的每个其他例子中被删除!
强迫 Git 忘记文件的正确方式是由 GitHub 在这里记录的。
我推荐阅读文档,但基本上:
git fetch --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch full/path/to/file' --prune-empty --tag-name-filter cat -- --all
git push origin --force --all
git push origin --force --tags
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
只需用文件的完整路径取代完整/路径/到/文件,请确保您已将文件添加到.gitignore 文件中。
您还需要(暂时)允许您的存储库不快推进,因为您正在改变您的 Git 历史。
如果您创建了 gitignore 文件,使用命令如 echo node_modules >>.gitignore,它不会工作。
窗口终端存储文件在 UCS-2 LE BOM 和 git 似乎不接受它。
您可以通过在笔记本中打开并使用 UTF-8 编码重新存储。
此分類上一篇
它现在工作。
我认为他们需要纠正这一点,因为做echo“filetoignore” >>.gitignore实际上看起来非常有用
复制/复制(单线)的答案是:
git rm --cached -r .; git add .; git status; git commit -m "Ignore unwanted files"
这个命令不会改变.gitignore 文件的内容. 它只会忽略已承诺到 Git 存储库的文件,但现在我们已经添加到.gitignore。
命令 git 状态; 只需审查更改,可以下载。
最终,它将立即通过“不要错过不需要的文件”的消息进行更改。
如果您不希望承诺更改,请放下命令的最后一部分(git commit -m “不要错过不需要的文件”)
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别