在Windows上忽略Git仓库中的目录
我怎样才能在Windows上使用msysgit忽略Git中的目录或文件夹?
在您的项目目录中创build一个名为.gitignore
的文件。 通过在文件中input目录名(用斜线添加)来忽略目录:
dir_to_ignore/
更多信息在这里 。
当事实上文件名是.gitignore.txt
时,默认情况下,Windows资源pipe理器将显示.gitignore.txt
Git不会使用.gitignore.txt
而且你不能将文件重命名为.gitignore
因为explorer认为它是一个没有名字的gitignoretypes的文件。
非命令行解决scheme:
您可以将文件重命名为“.gitignore”。 它会创build“.gitignore”
看来忽略文件和目录有两个主要方法:
-
的.gitignore
- 把
.gitignore
文件放到你的repo的根.git
(在Windows下,确保你看到的是真正的文件扩展名 ,然后把.gitignore.
(最后一点做成空文件扩展名)) - 进行全局configuration
~/.gitignore_global
并运行git config --global core.excludesfile ~/.gitignore_global
将其添加到你的git config
注意:之前跟踪的文件可以通过运行
git rm --cached filename
来解除跟踪 - 把
-
回购排除 – 对于不需要共享的本地文件,只需将文件模式或目录添加到文件
.git/info/exclude
。 这些规则不提交,所以其他用户不能看到更多信息
[已更新]要在忽略文件列表中设置例外,请参阅此问题 。
我有一些问题在Windows资源pipe理器中创build一个文件。 在开始。
解决方法是进入命令行界面并使用“编辑”创build一个新文件
要指示GIT忽略某些文件或文件夹,您必须创build.gitignore
文件。
但在Windows资源pipe理器中,您必须为文件提供一个名称,您不能仅使用扩展名创build文件,技巧是创build一个空文本文件并转至命令提示符,并将文件的名称更改为.gitignore
ren "New Text Document.txt" .gitignore
现在用你最喜欢的文本编辑器打开文件,并添加你希望忽略的文件/文件夹名称。 你也可以使用这样的通配符*.txt
希望它回答你的问题
在Windows中,还有一些额外的斜杠。 用.gitignore排除单个目录
dir_to_exclude /
将可能工作,但排除所有的目录
/
当你的目录中有空格的文件名时(比如my file.txt
),会导致问题:Git bash使用反斜杠(如my\ file.txt
)来转义这些空格,Git for Windows不区分/
和\
。
排除所有目录更好地使用:
** /
连续两个星号表示目录内容。
另外在你的\.git\info
项目目录中有一个与.gitignore
(我认为)实际上是相同的排除文件。 你可以添加文件和目录来忽略。
我有一些问题让git拾取Windows上的.gitignore文件。 $ GIT_DIR / info / exclude文件似乎总是工作。 但是,这种方法的缺点是,$ GIT_DIR目录中的文件不包含在签入中,因此不能共享。
(ps $ GIT_DIR通常是名为.git的隐藏文件夹)
如果你想保留一个文件夹,并没有其中的文件,只需把“.gitignore”文件作为内容。 该文件忽略来自存储库的所有内容。 但.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
您可以使用以下内容创build“.gitignore”文件:
* !.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可以看到caching目录中有不带标记的文件,但只会报告目录。)要解决这个问题,请确保已经添加并提交了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
,我只是懒于使用这个testing用例。)
要忽略git中的整个目录,最简单的方法是在目标目录中包含一个.gitignore文件,它只包含“*”
举例说明,
示例系统
/root/ .gitignore /dirA/ someFile1.txt someFile2.txt /dirB/ .gitignore someFile3.txt someFile4.txt
目标
- 忽略/ dirB /
顶级.gitignore(/root/.gitignore)
- 这是你的标准gitignore信息去的地方
忽略的目录.gitignore(/root/dirB.gitignore)
- 这个文件只读为'*',目录被完全忽略,本身和所有文件!
就这么简单:)
我有类似的问题,我工作在一个Windows工具链与Linux家伙共享回购,他们很高兴地创build文件与给定文件夹中的[案例]名称相同。
其效果是,我可以克隆回购,并立即有几十个“修改”的文件,如果我检查会造成浩劫。
我有窗户设置为区分大小写和混帐不忽略的情况下,但它仍然失败(在win32 API调用显然)。
如果我gitignore文件,那么我必须记住不跟踪.gitignore文件。
但是我在这里find了一个很好的答案http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
克里斯