在项目目录中创建一个名为 .gitignore
的文件。通过在文件中输入目录名称来忽略目录(附加斜杠):
dir_to_ignore/
更多信息是 here。
默认情况下,Windows Explorer 将显示 .gitignore
,而实际上文件名是 .gitignore.txt
。
Git 不会使用 .gitignore.txt
而且您不能将文件重命名为 .gitignore
,因为 Windows Explorer 认为它是一个没有名称的 gitignore 类型的文件。
非命令行解决方案:
You can rename a file to ".gitignore.", and it will create ".gitignore"
".gitignore"
,它会在不自动添加扩展名的情况下保存它。
".gitignore."
- 这是一个很棒的技巧!我也总是遇到 .htaccess
的问题......
似乎忽略文件和目录有两种主要方法:
.gitignore 将 .gitignore 文件放在存储库的根目录中,除了 .git 文件夹(在 Windows 中,确保看到真实的文件扩展名,然后生成 .gitignore。(末尾的点是空文件扩展名))进行全局配置 ~/.gitignore_global 并运行 git config --global core.excludesfile ~/.gitignore_global 以将其添加到您的 Git 配置中注意:之前跟踪的文件可以通过运行 git rm --cached filename Repository exclude - 对于本地不需要共享的文件,您只需将文件模式或目录添加到文件 .git/info/exclude。这些规则未提交,因此其他用户看不到它们。更多信息在这里。
要在忽略文件列表中设置例外,请参阅 this question。
git rm --cached <filename>
。对于在您创建 .gitignore
之前存在的存储库绝对重要
要忽略整个目录,请在此处放置一个带有“*”的 .gitignore。
例如,
示例系统
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
目标
忽略 dirB/ 的内容
顶级 (/root/.gitignore)
你可以在这里“dirB/”
忽略的目录 (/root/dirB/.gitignore)
或者你可以在这里“*”
Git 在文件系统的每一步都监视 gitignore,所以如果在每个级别都有一些东西要忽略,那就把它放进去! (例如,在这里放置为“someFile3.txt”,或者如果您愿意,可以在根 .gitignore 中放置为“dirB/someFile3.txt”)
所以在这里,我选择 dirB/.gitignore 作为“*”来忽略所有内容,包括其中的所有文件和子目录。
完成☺️
要指示 Git 忽略某些文件或文件夹,您必须创建 .gitignore
文件。
但在 Windows Explorer 中,您必须为文件提供一个名称。您不能仅使用扩展名创建文件。诀窍是创建一个空文本文件并转到命令提示符并将文件名更改为 .gitignore
:
ren "New Text Document.txt" .gitignore
现在使用您喜欢的文本编辑器打开文件并添加您希望忽略的文件/文件夹名称。您还可以使用如下通配符:*.txt
。
type nul > .gitignore
创建一个空文件
.gitignore.
我在 Windows Explorer 中创建一个开头带有 .
的文件时遇到了一些问题。
一种解决方法是进入命令外壳并使用“编辑”创建一个新文件。
.
,这样资源管理器就不会认为 .gitignore
是扩展名。然后在输入时,没有扩展名的尾随点就被吃掉了,你只剩下 .gitignore
TL;DR:尝试将其命名为 .gitignore.
=>你最终得到 .gitignore
如果你想维护一个文件夹而不是其中的文件,只需在文件夹中放置一个“.gitignore”文件,以“*”作为内容。该文件将使 Git 忽略存储库中的所有内容。但 .gitignore
将包含在您的存储库中。
$ git add path/to/folder/.gitignore
如果您添加一个空文件夹,您会收到此消息(.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
因此,使用“-f”强制添加:
$ git add path/to/folder/.gitignore -f
在 Windows 中,有一个额外的斜线。排除 .gitignore 中的单个目录
dir_to_exclude/
可能会工作,但不包括所有目录
/
当您的目录中有带空格的文件名(如 my file.txt
)时会导致问题:Git Bash 使用反斜杠(如 my\ file.txt
)转义这些空格,并且适用于 Windows 的 Git 不区分 /
和 \
。
要排除所有目录,最好使用:
**/
两个连续的星号表示目录内容。
您可以使用以下内容创建“.gitignore”文件:
*
!.gitignore
这个对我有用。
万一您需要排除子文件夹,您可以使用 **
通配符排除任何级别的子目录。
**/build/output/Debug/
在您的 \.git\info
项目目录中还有一个与 .gitignore
(我认为)实际上相同的排除文件。您可以在其中添加要忽略的文件和目录。
当一切都失败时,尝试编辑文件
/.git/info/排除
并将您想要的目录添加到文件末尾,如下所示:
# 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/
我将文件夹“assets”和“compiled”添加到要忽略的文件和目录列表中。
我在让 Git 在 Windows 上获取 .gitignore
文件时遇到了一些问题。 $GIT_DIR/info/exclude
文件似乎总是有效。
但是,这种方法的缺点是 $GIT_DIR
目录中的文件不包含在签入中,因此不共享。
ps $GIT_DIR 通常是名为 .git 的隐藏文件夹
在 Unix 上:
touch .gitignore
在 Windows 上:
echo > .gitignore
在终端中执行的这些命令将在当前位置创建一个 .gitignore
文件。
然后只需将信息添加到此 .gitignore
文件(例如使用 Notepad++)应忽略哪些文件或文件夹。保存您的更改。而已 :)
更多信息:.gitignore
我认为问题是你的工作树是这样的:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
...与您描述的 .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/
... 如果 index.html
文件尚未添加到存储库。 (Git 发现缓存目录中有未被忽略的文件,但它只报告目录。)要解决此问题,请确保您已添加并提交 index.html
文件:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
...然后您的 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)
(显然你也想提交 .gitignore
。我只是懒得处理这个测试用例。)
在 Windows 和 Mac 上,如果您想忽略当前目录中名为 Flower_Data_Folder 的文件夹,您可以执行以下操作:
echo Flower_Data_Folder >> .gitignore
如果是名为 data.txt
的文件:
echo data.txt >> .gitignore
如果是像“Data/passwords.txt”这样的路径
echo "Data/passwords.txt" >> .gitignore.
我有类似的问题。我使用与 Linux 人员共享存储库的 Windows 工具链工作,他们很乐意在给定文件夹中创建具有相同(大小写除外)名称的文件。
效果是我可以克隆存储库并立即拥有数十个“修改过的”文件,如果我签入这些文件,将会造成严重破坏。
我将 Windows 设置为区分大小写,将 Git 设置为不忽略大小写,但它仍然失败(显然在 Win32 API 调用中)。
如果我 gitignore 文件,那么我必须记住不要跟踪 .gitignore 文件。
但我在这里找到了一个很好的答案:
http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
只需在您的项目文件夹中创建 .gitignore
文件然后在其中添加文件夹的名称,例如:
frontend/node_modules
这对某些人来说可能非常明显,但我确实从其他答案中理解了这一点。
在目录中创建 .gitignore 文件本身并没有任何作用。您必须将 .gitignore 作为文本文件打开并写入您希望它忽略的文件/目录,每个文件/目录各占一行。
所以 cd 到 Git 存储库目录
touch .gitignore
nano .gitignore
然后写下您想要忽略的文件和/或目录的名称及其扩展名(如果相关)。
此外,.gitignore 是某些操作系统(例如 Mac)上的隐藏文件,因此您需要 ls -a
才能看到它,而不仅仅是 ls。
暂时忽略 git 中已经存在的目录/文件:
我在一个多项目 gradle 项目中有很多项目,他们可能需要很长时间才能删除它们,它们几乎相同但不同。有时我想通过完全删除它们来从 gradle 构建中删除它们。 git 毕竟可以让他们回来。但是我也不希望它们出现在 git status 中。所以我使用以下简单的程序;
删除我不想要的文件和文件夹。验证构建仍然有效告诉 git 暂时忽略已删除的文件(我们可以将它们取回)
git ls-files --deleted -z | git update-index --assume-unchanged -z --stdin
在没有目录的情况下继续生活,直到你想要他们回来。然后运行与以前相同的命令,但将假设未更改为 no-assume-unchanged
git ls-files --deleted -z | git update-index --no-assume-unchanged -z --stdin