在Windows上忽略Git repos中的目录

sf.*_*sf. 992 windows git msysgit gitignore git-bash

如何在Windows上使用msysgit忽略Git中的目录或文件夹?

ste*_*tew 1458

创建.gitignore项目目录中指定的文件.通过在文件中输入目录名来忽略目录(附加斜杠):

dir_to_ignore/
Run Code Online (Sandbox Code Playgroud)

更多信息在这里.

  • 在Windows cmd提示符下,您可以使用"edit .gitignore"或"notepad .gitignore"来创建正确的文件. (125认同)
  • 或者您也可以在windows git bash命令提示符下使用'touch .gitignore',这将创建正确命名的文件,然后可以通过记事本等进行编辑... (43认同)
  • 或者只创建一个名为.gitignore的文件.使用资源管理器并使用记事本编辑它(将删除尾随点).这样您就不必使用命令提示符. (38认同)
  • 或者,即使它是最快的方法,但令人惊讶的是,它只是在控制台中键入"echo folder_to_ignore >> .gitignore". (33认同)
  • 或者你可以从终端vim .gitignore.:) (6认同)
  • 这将递归地忽略所有名为 `dir_to_ignore` 的子文件夹,例如 `root_dir/dir_to_ignore` 和 `root_dir/some_dir/dir_to_ignore` 都将被忽略 (2认同)

小智 196

默认情况下,Windows资源管理器将.gitignore在实际上显示文件名时显示.gitignore.txt

Git不会用 .gitignore.txt

并且您无法将文件重命名为,.gitignore因为资源管理器认为它是一个没有名称的gitignore类型的文件.

非命令行解决方案:

You can rename a file to ".gitignore.", and it will create ".gitignore"

  • 这样可行?我总是告诉人们打开记事本,在"另存为"对话框中键入双引号包围的文件名,例如".gitignore"`并保存它而不自动添加扩展名. (45认同)
  • 整齐.包括尾随期间确实有效.Explorer剥离了最后一个句点,导致名为".gitignore"的文件.我认为引用方法虽然更清晰,但不太可能产生意外. (9认同)
  • `".gitignore."` - 这是一个绝妙的技巧!我也总是在使用 `.htaccess` 时遇到问题...... (6认同)
  • 哇,很奇怪,但确实有效.谢谢! (5认同)
  • 或者在git bash中只需在您的文件夹中输入"touch .gitignore"即可 (5认同)
  • 或者,在"另存为"对话框中,将文件类型更改为"所有文件(*.*)" - 然后Windows将不会附加任何扩展名. (3认同)

Vai*_*ris 98

似乎忽略文件和目录有两种主要方式:

  1. 的.gitignore

    • .gitignore文件放入repo的根目录旁边.git(在Windows中,确保您看到真正的文件扩展名然后make .gitignore.(使用最后的点来建立空文件扩展名))
    • 进行全局配置~/.gitignore_global并运行git config --global core.excludesfile ~/.gitignore_global以将其添加到您的git配置中

    注意:以前跟踪的文件可以通过运行来解除跟踪 git rm --cached filename

  2. 回购排除 - 对于不需要共享的本地文件,只需将文件模式或目录添加到文件中即可.git/info/exclude.这些规则没有提交,所以其他用户在这里看不到更多信息

[已更新]要在忽略的文件列表中生成例外,请参阅此问题.

  • 好指出`git rm --cached <filename>`.对于在创建`.gitignore`之前存在的回购绝对至关重要 (32认同)
  • git rm --cached <filename>解决了我遇到的问题.gitignore :) (2认同)

sf.*_*sf. 43

我在Windows资源管理器中使用a创建文件时遇到了一些问题.在开始.

一个解决方法是进入命令空间并使用"编辑"创建一个新文件

  • 或者只是在末尾添加一个额外的 `.`,这样资源管理器就不再认为 `.gitignore` 是扩展名。然后在入口处,没有扩展名的尾随点被吃掉了,你只剩下 `.gitignore` TL;DR:尝试将它命名为 `.gitignore.` =&gt; 你最终得到了 `.gitignore` (2认同)

Mah*_*hes 41

要指示GIT忽略某些文件或文件夹,您必须创建.gitignore文件.

但在Windows资源管理器中你必须提供文件的名称,你只是无法创建只有扩展名的文件,诀窍是创建一个空文本文件并转到命令提示符并将文件名更改为 .gitignore

ren "New Text Document.txt" .gitignore
Run Code Online (Sandbox Code Playgroud)

现在用您喜欢的文本编辑器打开文件,并添加您希望忽略的文件/文件夹名称.你也可以使用这样的通配符*.txt

希望它能回答你的问题

  • 或者只是:echo dir_to_ignore /> .gitignore (13认同)
  • 或者`type nul> .gitignore`来创建一个空文件 (2认同)

sen*_*rio 19

如果要维护文件夹而不是文件夹中的文件,只需将".gitignore"文件放在文件夹中,并以"*"作为内容.此文件将忽略存储库中的所有内容.但是.gitignore会包含在你的回购中.

$ git add path/to/folder/.gitignore
Run Code Online (Sandbox Code Playgroud)

如果添加空文件夹,则会收到此消息(.gitignore是隐藏文件)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Run Code Online (Sandbox Code Playgroud)

所以,使用"-f"强制添加:

$ git add path/to/folder/.gitignore -f
Run Code Online (Sandbox Code Playgroud)


wor*_*art 16

在Windows中,有一个额外的斜杠.剔除在一个目录中的.gitignore

dir_to_exclude /

可能会工作,但排除所有目录

/

当你的目录中有空格(如my file.txt)的文件名时会导致问题:Git bash用反斜杠(比如my\ file.txt)转义这些空格,而Git for Windows不区分/\.

要排除所有目录,最好使用:

**/

两个连续的星号表示目录内容.


小智 14

同样在你的\.git\info项目目录中,有一个排除文件实际上与.gitignore(我认为)相同.您可以添加要忽略的文件和目录.


Eat*_*oes 12

如果您需要排除子文件夹,可以使用**通配符排除任何级别的子目录.

**/build/output/Debug/
Run Code Online (Sandbox Code Playgroud)


J-D*_*zle 11

要忽略git中的整个目录,最简单的方法是在目标目录中包含一个.gitignore文件,该文件只包含"*"

一个例子,

示例系统

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt
Run Code Online (Sandbox Code Playgroud)

目标

  • 忽略/ dirB /的内容

顶级.gitignore(/root/.gitignore)

  • 这是您的标准gitignore信息的地方

忽略目录.gitignore(/root/dirB.gitignore)

  • 此文件只读为'*',目录被完全忽略,本身和所有文件!

就这么简单:)

  • 标准的 gitignore 信息是什么?你能给个例子吗?当你说“文件只是读取为*”时,你是什么意思,这没有任何意义?我认为我没有从这个答案中理解任何内容,并且发现它一点也不简单。 (2认同)

Xed*_*ret 8

其他一切都失败时,尝试编辑该文件

/.git/info/exclude

并将您想要的目录添加到文件的末尾,如下所示:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Run Code Online (Sandbox Code Playgroud)

我将文件夹"assets"和"compiled"添加到要忽略的文件和目录列表中.


Jas*_*son 7

我在使用git来获取Windows上的.gitignore文件时遇到了一些问题.$ GIT_DIR/info/exclude文件似乎总是有效.但是,这种方法的缺点是$ GIT_DIR目录中的文件不包含在签入中,因此不共享.

(ps $ GIT_DIR通常是名为.git的隐藏文件夹)


Cla*_*ira 7

您可以使用以下内容创建".gitignore"文件:

*
!.gitignore
Run Code Online (Sandbox Code Playgroud)

它适用于我和简单.

  • 这是最好的答案,它还为项目部署和维护带来了额外的好处. (2认同)

Olu*_*ola 6

在 Windows 和 Mac 上,如果要忽略当前目录中名为 Flower_Data_Folder 的文件夹,可以执行以下操作:

echo Flower_Data_Folder >> .gitignore
Run Code Online (Sandbox Code Playgroud)

如果它是一个名为的文件data.txt

echo data.txt >> .gitignore
Run Code Online (Sandbox Code Playgroud)

如果是“Data/passwords.txt”这样的路径

echo "Data/passwords.txt" >> .gitignore. 
Run Code Online (Sandbox Code Playgroud)


Mar*_*air 5

我假设问题是你的工作树是这样的:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
Run Code Online (Sandbox Code Playgroud)

......跟.gitignore你描述的一样.这将为您提供如下git status输出:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/
Run Code Online (Sandbox Code Playgroud)

... 如果index.html文件还没有被添加到库中.(git看到缓存目录中有未签名的文件,但只报告目录.)要解决此问题,请确保已添加并提交了index.html文件:

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
Run Code Online (Sandbox Code Playgroud)

......然后你的git status意志如下:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)

(显然你也想提交.gitignore,我只是对这个测试用例很懒.)

  • 哎呀,误读了!考虑一下你的观点. (3认同)
  • @Dave Everitt:这就是为什么我说"显然你确实想要提交.gitignore". (2认同)

小智 5

在Unix上:

touch .gitignore
Run Code Online (Sandbox Code Playgroud)

在Windows上:

echo > .gitignore
Run Code Online (Sandbox Code Playgroud)

在终端中执行的这些命令将.gitignore在当前位置创建一个文件。

然后只需向该.gitignore文件添加信息(例如,使用Notepad ++),即可忽略哪些文件或文件夹。保存您的更改。而已 :)

详细信息:.gitignore