是否有像svn一样的git忽略命令?


Answers:


136

没有特殊git ignore命令。

编辑.gitignore位于工作副本内适当位置的文件。然后,您应该添加.gitignore并提交。克隆该存储库的每个人都将忽略那些文件。

请注意,只有以开头的文件名将/相对于目录.gitignore驻留。其他所有文件都将与子目录中的文件匹配。

您还可以编辑.git/info/exclude以仅忽略该一个工作副本中的特定文件。该.git/info/exclude文件不会被提交,因此只能在此一份工作副本中本地应用。

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

运行git help gitignore并阅读文本以获取详细信息。


75
没有简单的忽略命令似乎对git团队来说是一种疏忽。
jcollum

4
@jcollum乍一看确实如此,但是使用别名添加新命令的简单性以及创建一个文件并处理所有极端情况/陷阱/编辑文本文件的潜在问题的复杂性也可以将其留给用户。我感到矛盾是因为我既同意又不同意你。
abelito

100

很棒的tj / git-extras附带了一个非常有用的git ignore命令。

以下是一些用法示例:

列出所有当前忽略的模式

git ignore

添加图案

git ignore "*.log"

gitignore.io添加模板之一

git ignore-io -a rails

git-extras提供了更多有用的命令。绝对值得尝试。


1
因此,如果我使用git ignore“ index.html”,它将忽略此文件吗?
JohnAndrews 2015年

-t命令仍然适用吗?当我运行它时,它只会添加-t以及我尝试添加到
gitignore

50

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

echo .svn/ >> .gitignore

1
我使用该语法找到了这条推特twitter.com/noodl_io/status/669904872704253953
JohnAndrews 2015年

3
在Windows上的Git Bash中,我需要添加一个前后的/“ \”(以创建新行),例如echo /nbproject/project.properties\ >> .gitignoreecho /nbproject/project.xml\ >> .gitignore
瑞安

15

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

  • .gitignore任何文件夹中的文件将忽略该文件中指定的文件。可以使用通配符。
  • .git/info/exclude保存全局忽略模式,类似于global-ignoresinversions配置文件中的内容。

6
请注意,.gitignore文件中不包含'/'的模式是递归匹配的(即,在.gitignore文件所在目录的所有子目录中),这与svn:ignoreSubversion 中目录属性的情况相反。
JakubNarębski09年

6

我希望还不晚。

如果您使用的是Windows,则只需执行以下操作即可创建.gitignore文件

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

为了编辑.gitignore你可以运行

notepad .gitignore

2
如果您已经有一个.gitignore文件,请不要使用它,它会覆盖它!要附加要忽略的文件,请使用以下命令:echo ignore.ext >> .gitignore
TomEberhard

没错,建议仅在.gitignore文件不存在的情况下使用。最好使用“ notepad .gitignore”,如果您拥有.gitignore文件,它将打开它,如果没有,它将创建一个,然后您可以从记事本添加所有文件。每行1个文件/文件夹
Nesar

3

在存储库的根目录上创建一个名为.gitignore的文件。在此文件中,将您要忽略的每个文件的相对路径放在一行中。您可以使用*通配符。


2

使用已经提供的答案,您可以git ignore使用alias滚动自己的命令。将其添加到〜/ .gitconfig文件中:

ignore = !sh -c 'echo $1 >> .gitignore' -

或者从您选择的(* nix)shell运行以下命令:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

同样,可以创建一个git exclude通过替换命令ignoreexclude.gitignore.git/info/exclude在上面。

(如果您还不了解这两个文件之间的区别,请在此处阅读答案,请参阅此问题。)


1
答案是正确扩展$ 1: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

为您的项目定义一个完整的.gitignore文件很有用。奖励是安全地使用便捷工具--all-a标志类似add和的命令commit

另外,考虑为常见的忽略模式(例如)定义一个全局〜/ .gitignore文件*~ ,该文件涵盖了Emacs创建的临时文件。


1

您必须为此安装git-extras。您可以使用apt-get将其安装在Ubuntu中,

$ sudo apt-get install git-extras

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

$ git ignore file_name

3
在Mac上,如果已安装Homebrew,则可以运行brew install git-extras
Alex Glover

0

您也可以使用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的节点项目,并且您正在linux上使用webstorm,那么您可能需要键入:(
gi linux,webstorm,node,grunt > .gitignore创建一个全新文件)

gi linux,webstorm,node,grunt >> .gitignore(将新规则附加/添加到现有文件中)

宝贝,你很好

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.