【发布时间】:2009-11-04 22:30:03
【问题描述】:
我是git 的新用户,我正在开始一个新项目。我有一堆我想忽略的点文件。 git 是否有像 svn 一样的忽略命令?
【问题讨论】:
-
gitignore 的好替代品:git update-index --assume-unchanged
,感谢stackoverflow.com/a/16442091/2162226
我是git 的新用户,我正在开始一个新项目。我有一堆我想忽略的点文件。 git 是否有像 svn 一样的忽略命令?
【问题讨论】:
没有特殊的git ignore 命令。
编辑位于工作副本中适当位置的.gitignore 文件。然后你应该添加这个.gitignore 并提交它。克隆该 repo 的每个人都将忽略这些文件。
请注意,只有以 / 开头的文件名将与 .gitignore 所在的目录相关。其他所有文件都将匹配任何子目录中的文件。
您还可以编辑.git/info/exclude 以忽略该工作副本中的特定文件。 .git/info/exclude 文件不会被提交,因此只会在这个工作副本中本地应用。
您还可以使用git config --global core.excludesfile 设置一个包含要忽略的模式的全局文件。这将在本地应用于同一用户帐户上的所有 git 工作副本。
运行git help gitignore 并阅读正文以了解详细信息。
【讨论】:
很棒的tj/git-extras 附带了一个非常有用的git ignore 命令。
以下是一些使用示例:
git ignore
git ignore "*.log"
git ignore-io -a rails
git-extras 提供了更多有用的命令。绝对值得一试。
【讨论】:
在 Linux/Unix 上,您可以使用 echo 命令将文件附加到 .gitignore 文件。例如,如果您想忽略所有 .svn 文件夹,请从项目的根目录运行:
echo .svn/ >> .gitignore
【讨论】:
/ 和尾随的 '\'(以创建新行),例如 echo /nbproject/project.properties\ >> .gitignore 和 echo /nbproject/project.xml\ >> .gitignore。
/字符是最重要的。没有它,新规则将附加到 .gitignore 文件中已经存在的最后一个条目,而不是在文件底部创建为新条目。
您有两种忽略文件的方法:
.gitignore 将忽略该文件夹文件中指定的文件。可以使用通配符。.git/info/exclude 持有全局忽略模式,类似于 subversions 配置文件中的 global-ignores。【讨论】:
.gitignore文件中不包含'/'的模式被匹配递归(即在.gitignore文件所在目录的所有子目录中) ,与 Subversion 中 svn:ignore 目录属性的情况相反。
在存储库的根目录上创建一个名为 .gitignore 的文件。在此文件中,您将要忽略的每个文件的相对路径放在一行中。您可以使用* 通配符。
【讨论】:
为您的项目定义一个完整的 .gitignore 文件很有用。奖励是安全地使用方便的--all 或-a 标志到add 和commit 等命令。
另外,考虑为通常被忽略的模式定义一个全局 ~/.gitignore 文件,例如 *~,它涵盖了由 Emacs 创建的临时文件。
【讨论】:
使用已经提供的答案,您可以使用alias 滚动您自己的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。)
【讨论】:
你必须为此安装 git-extras。您可以使用 apt-get 在 Ubuntu 中安装它,
$ sudo apt-get install git-extras
然后就可以使用 git ignore 命令了。
$ git ignore file_name
【讨论】:
brew install git-extras。
对于工作副本或 repo 中不存在的名称:
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
【讨论】:
你也可以使用 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(将新规则追加/添加到现有文件)
bam,你很高兴
【讨论】: