我正在尝试从现有文件夹创建新的Git存储库。我已经在该文件夹的根目录下创建了一个.gitignore
文件。但是如果我输入以下命令:
git add *
git commit
git push
在 Windows 上,应该忽略的文件仍然被提交到远程存储库。我购买了 SmartGIT 的许可证,但它似乎也忽略了 .gitignore
。我必须手动选择要提交的新文件。
我正在尝试从现有文件夹创建新的Git存储库。我已经在该文件夹的根目录下创建了一个.gitignore
文件。但是如果我输入以下命令:
git add *
git commit
git push
在 Windows 上,应该忽略的文件仍然被提交到远程存储库。我购买了 SmartGIT 的许可证,但它似乎也忽略了 .gitignore
。我必须手动选择要提交的新文件。
您的文件仍需被跟踪,您可以通过执行git status
来查看,即使它在.gitignore中也会显示该文件已修改。
您需要执行以下操作:
git update-index --assume-unchanged [path_to_file]
请使用 "git add .
" 代替。
并且,在Linux上我可以运行以下命令:
$ git init $ echo foo > .gitignore $ echo foo > foo $ echo bar > bar $ git add -v * 以下路径被您的 .gitignore 文件中的一个忽略: foo 如果您真的想添加它们,请使用 -f。 致命错误:没有添加任何文件
你的文件已经被追踪了吗?.gitignore 文件只会忽略关于未被追踪文件的注释,但不会防止已被追踪的文件继续被追踪。
我也遇到了.gitignore的问题。我查看了提供的链接,解决了一半的问题。
使.gitignore完全起作用的关键是在文件的第一行添加注释。Git无法解析位于第一行的排除内容。
干杯
您可以创建一个UTF-8编码的文本文件。尝试将其保存为ANSI编码。在git bash中,您可以使用vi -b进行验证。
vi -b
,但在从头开始重写 .gitignore 后它起作用了。 - Javierecho
时(如Jakub Narębski的答案所述),你必须小心空格。C:\test>dir /B
TOBEIGNORED
C:\test>echo TOBEIGNORED > .gitignore
C:\test>git status
[...]
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# TOBEIGNORED
C:\test>echo TOBEIGNORED> .gitignore
C:\test>git status
[...]
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
文件的第一行注释非常重要!我花了很多时间尝试排除文件,结果发现GIT忽略了忽略文件中的第一行。
可能你的排除文件遮罩不准确。
我在MacOSX上使用git版本1.7.12.3,但.gitignore的第一行也没有被考虑在内。只需将注释添加为第一行即可。
.gitignore
文件的例子,说明为什么不按预期工作吗? - Greg Hewgill.gitignore
文件的内容?.gitignore
将使用底层操作系统特定的fnname()
方法:例如请参见:https://dev59.com/u3E95IYBdhLWcg3wY8_6和https://dev59.com/T3M_5IYBdhLWcg3wPAZF。 - VonCgit status
的结果和.gitignore
的内容。 在 msysgit 上,目录分隔符是正斜杠:/
,你的情况是怎样的? - Gauthier