直接从Git shell将文件添加到.gitignore中

6

我试图从git shell直接将特定文件添加到.gitignore。要忽略的文件是token.mat

如果我输入:

touch .gitignore

然后手动使用文本编辑器打开.gitignore文件,并添加以下内容:

token.mat

保存并关闭,它可行,git会忽略它(当我在git shell中键入git status时,不再看到token.mat)
然而,在git shell中,如果我键入:
touch .gitignore
echo 'token.mat' >> .gitignore

当我输入git status时,git不会忽略token.mat,我仍然能看到它。然而,当我用文本编辑器打开.gitignore时,我看到了列出的token.mat,它看起来和我手动添加它时完全一样。

有人知道为什么吗?或者我如何可以在git shell直接向.gitignore中添加文件?

提前感谢任何帮助!

其他细节:

  • Windows 7专业版本,service pack 1
  • git版本:2.5.3.windows.1
  • 文本编辑器:Notepad ++

文本编辑器是否处理将文件索引添加/处理到Git项目中? - hjpotter92
2个回答

5

确保您的echo没有添加尾随空格:

echo 'token.mat'>>.gitignore

那样,.gitignore 应该能够正常工作。 >> 用于向 .gitignore 文件添加内容,而单个 > 则会完全覆盖它。
此外,2.5 版本已经过时:解压最新的 Git,例如 PortableGit-2.14.1-64-bit.7z.exe 到任何你想要的地方,将其添加至%PATH%,然后再次检查。

感谢VonC!尽管没有尾随空格,但升级到Git 2.14解决了问题。另外需要注意的是,为了使用这个解决方案,我还从Git Shell切换到了Git Bash。 - sjp working
想要补充一下,单个的 '>' 会覆盖现有数据,双个 '>>' 则会更新文件。 - afrologicinsect
@afrologicinsect 很好的观点。我已经在答案中包含了它。 - VonC

2
被接受的答案完全正确,但在日常场景中会不完整,因为它只向.gitignore添加一个文件,如果要添加多个文件到您的.gitignore中,请使用以下命令: echo -e 'file1 \n file2 \n file3 \n' >> .gitignore 您可以在不使用touch的情况下使用上述命令,这将自动创建一个.gitignore并添加所有文件。确保您包含-e>>
在这里,-e作为标志,因此换行符\n被正确解释,>>将内容附加到.gitignore文件中。
如果需要覆盖已经存在的.gitignore,请使用>而不是>>
您可以通过访问此链接了解更多关于echo的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接