Git有像svn一样的忽略命令吗?

132

我是一个新用户,正在使用 git 并开始一个新项目。我有一堆点文件需要忽略。在 svn 中有一个 ignore 命令,那么 git 中是否也有类似的命令呢?


1
一个很好的替代gitignore的方法是:**git update-index --assume-unchanged <file>**,感谢https://dev59.com/FG015IYBdhLWcg3w6QLA#16442091。 - Gene Bo
10个回答

143

没有特殊的git ignore命令。

编辑位于工作副本中适当位置的.gitignore文件。然后将此.gitignore文件添加并提交。克隆该 repo 的每个人都将忽略那些文件。

请注意,仅以/开头的文件名将与目录.gitignore所在的目录相关联。其他所有内容都将匹配任何子目录中的文件。

您还可以编辑.git/info/exclude以仅在一个工作副本中忽略特定文件。.git/info/exclude文件不会被提交,因此仅在此一个工作副本中生效。

您还可以使用git config --global core.excludesfile设置全局文件以忽略模式。这将在同一用户帐户上的所有 git 工作副本中本地应用。

运行git help gitignore并阅读详细说明。


80
Git 团队没有提供一个简单的 ignore 命令似乎是一个很大的疏忽。 - jcollum
5
乍一看是这样的,但是将一个命令重命名以添加新命令的简单性和创建一个命令并处理所有边缘情况/问题/潜在问题的复杂性使其留给用户更有意义。我感到矛盾,因为我既同意又不同意你的观点。 - abelito

105

非常有用的 git ignore 命令随着神奇的 tj/git-extras 一起提供。

以下是一些使用示例:

列出所有当前被忽略的模式

git ignore

添加模式

git ignore "*.log"

gitignore.io中添加一个模板

git ignore-io -a rails

git-extras 提供了许多更有用的命令。一定值得一试。


1
如果我使用git ignore "index.html",它会忽略这个文件吗? - WJA
“-t” 命令还适用吗?当我运行它时,它只是将“-t”和任何我尝试添加到 git 忽略文件中的模板添加进去。 - Bynho

54

在Linux/Unix系统下,您可以使用echo命令将文件追加到.gitignore文件中。例如,如果您想忽略所有的.svn文件夹,在项目根目录下运行以下命令:

echo .svn/ >> .gitignore

1
我使用那个语法找到了这条推文 https://twitter.com/noodl_io/status/669904872704253953 - WJA
3
在Windows上运行Git Bash时,我需要在命令中添加前置的斜杠/和尾随的反斜杠\(以创建新行),例如echo /nbproject/project.properties\ >> .gitignoreecho /nbproject/project.xml\ >> .gitignore - Ryan
那个末尾的斜杠 / 字符至关重要。如果没有它,新规则将被追加到已存在的.gitignore文件中的最后一个条目,而不是作为文件底部的新条目创建。 - RBT

15

您有两种忽略文件的方法:

  • 在任何文件夹中使用.gitignore文件可以按照该文件中指定的规则忽略该文件夹下的文件。可以使用通配符。
  • .git/info/exclude保存全局忽略规则,类似于subversion配置文件中的global-ignores

6
请注意,.gitignore 文件中不包含 '/' 的模式会递归地进行匹配(即在包含 .gitignore 文件的目录及其所有子目录中都适用),这与 Subversion 中的 svn:ignore 目录属性不同。 - Jakub Narębski

4
在您的代码库根目录下创建一个名为.gitignore的文件。在此文件中,每行输入要忽略的文件的相对路径。您可以使用通配符*

3

为您的项目定义完整的 .gitignore 文件非常有用。这样做的好处是可以安全地使用方便的 --all-a 标志来运行命令,比如 addcommit

此外,考虑定义一个全局的 ~/.gitignore 文件,用于常见被忽略的模式,例如 *~,它可以覆盖 Emacs 创建的临时文件。


2

您需要安装git-extras才能执行此操作。 在Ubuntu中,您可以使用apt-get进行安装。

$ sudo apt-get install git-extras

然后您可以使用git ignore命令。
$ git ignore file_name

3
在 Mac 上,如果你已经安装了 Homebrew,你可以运行 brew install git-extras 命令来安装 git-extras。 - Alex Glover

2
利用已经提供的答案,你可以使用别名自己编写git ignore命令。将以下代码添加到你的~/.gitconfig文件中:
ignore = !sh -c 'echo $1 >> .gitignore' -

在您选择的(*nix) shell中运行以下命令:
git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

您也可以通过将上述命令中的ignore替换为exclude,并将.gitignore替换为.git/info/exclude来创建一个git exclude命令。

(如果您还不理解这两个文件的区别,请参阅this question。)


1
这里的答案正确地展开了$1:http://stackoverflow.com/a/21884533/1465227 - Archangel33

2

对于工作副本或仓库中不存在的名称:

echo /globpattern >> .gitignore

或者对于已存在的文件(在sh类型的命令行中):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1
您还可以使用Joe Blau的gitignore.io。
可以通过网络界面https://www.gitignore.io/,也可以通过安装CLI工具完成,非常简单快速,只需在终端上键入以下内容:
Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile 然后,您只需键入gi,后跟所需的所有平台/环境元素,即可获得gitignore条件。 例子!
假设你正在处理一个包含grunt的node项目,并且在Linux上使用webstorm,那么你可能想要输入:
gi linux,webstorm,node,grunt > .gitignore (创建一个全新的文件)
或者
gi linux,webstorm,node,grunt >> .gitignore (将新规则追加/添加到现有文件中)

完成了,你可以开始工作了。


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