【问题标题】:Is there an ignore command for git like there is for svn?git 有没有像 svn 一样的忽略命令?
【发布时间】:2009-11-04 22:30:03
【问题描述】:

我是git 的新用户,我正在开始一个新项目。我有一堆我想忽略的点文件。 git 是否有像 svn 一样的忽略命令?

【问题讨论】:

标签: git gitignore ignore


【解决方案1】:

没有特殊的git ignore 命令。

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

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

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

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

运行git help gitignore 并阅读正文以了解详细信息。

【讨论】:

  • 没有简单的忽略命令似乎是 git 团队的疏忽。
  • @jcollum 乍一看确实如此,但是添加新命令的别名命令的简单性以及创建一个命令和解决所有边缘情况/陷阱/编辑文本文件的潜在问题的复杂性把它留给用户也是有意义的。我感到矛盾,因为我既同意又不同意你。
【解决方案2】:

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

以下是一些使用示例:

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

git ignore

添加图案

git ignore "*.log"

添加来自gitignore.io 的模板之一

git ignore-io -a rails

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

【讨论】:

  • 所以如果我使用 git ignore "index.html" 它会忽略这个文件?
  • -t 命令还适用吗?当我运行它时,它只是将 -t 和我尝试添加的任何模板添加到 git 忽略文件中
【解决方案3】:

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

echo .svn/ >> .gitignore

【讨论】:

  • 我用twitter.com/noodl_io/status/669904872704253953987654321@这个语法发现了这条推文
  • 在 Windows 上的 Git Bash 中,我需要添加前面的 / 和尾随的 '\'(以创建新行),例如 echo /nbproject/project.properties\ >> .gitignoreecho /nbproject/project.xml\ >> .gitignore
  • 最后那个正斜杠/字符是最重要的。没有它,新规则将附加到 .gitignore 文件中已经存在的最后一个条目,而不是在文件底部创建为新条目。
【解决方案4】:

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

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

【讨论】:

  • 注意.gitignore文件中不包含'/'的模式被匹配递归(即在.gitignore文件所在目录的所有子目录中) ,与 Subversion 中 svn:ignore 目录属性的情况相反。
【解决方案5】:

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

【讨论】:

    【解决方案6】:

    为您的项目定义一个完整的 .gitignore 文件很有用。奖励是安全地使用方便的--all-a 标志到addcommit 等命令。

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

    【讨论】:

      【解决方案7】:

      使用已经提供的答案,您可以使用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。)

      【讨论】:

      【解决方案8】:

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

      $ sudo apt-get install git-extras
      

      然后就可以使用 git ignore 命令了。

      $ git ignore file_name
      

      【讨论】:

      • 在 Mac 上,如果你安装了 Homebrew,你可以运行 brew install git-extras
      【解决方案9】:

      对于工作副本或 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
      

      【讨论】:

        【解决方案10】:

        你也可以使用 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,你很高兴

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-24
          • 1970-01-01
          相关资源
          最近更新 更多