我的.gitignore文件看起来像这样:
> cat .gitignore
.bundle
db/*.sqlite3
log/*.log
tmp/**/*
*~
Run Code Online (Sandbox Code Playgroud)
但是,git不会忽略以下结尾的文件~:
> git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/views/jobs/_form.html.erb
# modified: app/views/jobs/_form.html.erb~
# modified: public/stylesheets/jobs_new_edit.css~
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?
我用git 管理几个pdf和graffle文件.我想pdf仅在graffle文件名不相同的情况下才将文件添加到存储库,例如
只添加foo.pdf和bar.graffle进入目录库
$ ls
foo.pdf
bar.pdf
bar.graffle
Run Code Online (Sandbox Code Playgroud)
如果这样的目标不能仅用于完成gitignore,是否存在任何工作?
bar.pdf只能bar.graffle通过GUI中的几个步骤生成,所以我想让它们保持提交.
是的,这看起来像是重复的,因为我可以看到之前已经问了几次.但是我看到的其他答案都没有帮助我.
我有一个Umbraco安装,我想存储在Git(确切地说是GitHub),我显然想省略Umbraco创建的日志文件和临时文件.
我的.gitignore文件中有以下内容:
App_Data/TEMP/
App_Data/Logs/
App_Data/ClientDependency/
App_Data/Preview/
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.这些目录中的文件仍然会被添加.
我试过在最后添加一个星号(文档说它不应该被需要 - 它只处理该目录中的文件,如果它在那里.)
我确保每行末尾没有空格.
我仔细检查了目录名的大小写.
我已经从一种方式换到另一种方式.
如果我从存储库的根目录放入完整路径它确实有效,但这太具体了.(虽然我现在打算用它来解决这个问题).如果我们创建基于Umbraco的新项目,我希望能够轻松地重用.gitignore文件.
未正确处理完整路径的其他规则(例如NuGet的包文件夹)正在被正确处理.
packages/
Run Code Online (Sandbox Code Playgroud)
这条规则有效 - 我并没有真正看到差异.
谁能看到我在这里做错了什么?
UPDATE
有效的完整路径是:
/src/Company.Client.Web/App_Data/Logs/
/src/Company.Client.Web/App_Data/TEMP/
/src/Company.Client.Web/App_Data/ClientDependency/
/src/Company.Client.Web/App_Data/Preview/
Run Code Online (Sandbox Code Playgroud)
(我已经混淆了一点,但那就是现在的情况)
以下是GitHub for Windows所展示的内容:

更新2
.git文件夹位于存储库的根目录下,因此/.换句话说D:\github\RepositoryName\.git\,为了比较该src文件夹D:\github\RepositoryName\src\
我正在一个带有嵌套 git 存储库的 linux 系统上工作。我的文件/目录结构如下:
~/
.git/
.gitignore
file1
project/
.git/
file2
file3
Run Code Online (Sandbox Code Playgroud)
在我的 homedir 中,我为我的 linux 配置文件创建了一个 repo。忽略文件 (~/.gitignore) 仅包含“*”(排除所有内容)。我用'git add -f file'添加了文件。在嵌套存储库(项目)中,我发现即使在提交时更新了正确的 '(~/project/).git' 目录,所有内容也被排除在外。我已经使用以下命令检查了这一点:
> cd ~/project
> git add file2
The following paths are ignored by one of your .gitignore files:
file2
Use -f if you really want to add them.
fatal: no files added
> git check-ignore -v file2
~/.gitignore:1:* file2
Run Code Online (Sandbox Code Playgroud)
命令 check-ignore 从版本 1.8.2 开始可用,其动机是 stackoverflow 问题:which gitignore rule is ignoring my file。 …
如果我更改一堆文件然后运行命令,git add .它会将所有文件都包含.gitignore在我的提交列表中。
如果我使用,git rm --chached .gitignore则它显示为deleted: .gitignore并git add .正在添加已删除的.gitignore文件
我如何忽略.gitignore自身,以便该git add .命令仅在实际文件或目录中添加我的更改。
我不能忽略 windows git 中的目录。我下载了这个文件:- https://gist.github.com/kmorcinek/2710267。但我仍然一直认为:-
它不能抱怨 .vs/ 目录下的任何修改。我确定我在正确的位置添加了 .gitignore 文件,如下所示:-
我的 .gitignore 文件:-
# Download this file using PowerShell v3 under Windows with the following comand:
# Invoke-WebRequest https://gist.githubusercontent.com/kmorcinek/2710267/raw/ -OutFile .gitignore
# or wget:
# wget --no-check-certificate http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug /
[Rr]elease /
x64 /
build /
[Bb]in/
[Oo]bj /
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
* */ packages/*
# except build/, …Run Code Online (Sandbox Code Playgroud) 所以我的.gitignore只是在某个时候停止正常工作,并向我显示我想忽略的目录中的更改.
我已经阅读了有关此***解决方案的所有信息:
git rm -r --cached.git add.git commit -m"修复未跟踪文件"
它确实在我的机器上完美运行,我做了这三个步骤 - 提交它们 - 我可以在我的机器上对被忽略的目录进行更改.
问题是,当我将此提交提取到服务器时,它会删除所有被忽略的内容!不是它只是忽略它,它从服务器中删除文件和目录,使项目变得无用......
在整个互联网上,这个解决方案似乎是唯一一个破坏.gitignore的解决方案,但并不是因为它删除了不应删除的文件和目录.这很傻,很久以前就应该删除这样一个愚蠢的bug ...
编辑:它发生在不同的路径或文件上,当手动或通过软件添加到.gitignore时 - 将gitignore路径放在这里是没有意义的.< - 这是我提到的错误,而不是我运行一些命令......
这种模式正常工作:
**/Assets/Plugins/Editor/JetBrains*
Run Code Online (Sandbox Code Playgroud)
但这种模式不会:
Assets/Plugins/Editor/JetBrains*
Run Code Online (Sandbox Code Playgroud)
据我所知,这两种模式是等价的.这可能是什么问题?