Git 存储库忽略所有.dlls

标题说明了一切。我正在尝试将我的 NuGet 包添加到存储库中。除了。检测到 dll 文件。

Gitignore 文件不包含对 * 的引用。DLL.那个。Dll 文件在整个存储库中的任何位置都不会被识别。Info/ 排除也是空的。

我还克隆了存储库(从文件系统到文件系统,而不是从远程到文件系统) ,但没有成功。这个问题也发生在两台不同的计算机上。

我可以手动添加.dll 文件,但它们应该被跟踪。为什么没有跟踪它们?

83232 次浏览

Do you have either ~/.gitignore_global or ~/.gitignore in your home directory which could also be listing these file patterns?

See https://help.github.com/articles/ignoring-files

I could add the .dll files manually, but they should be tracked. Why are they not being tracked?

No, they shouldn't be tracked, unless you've added them. Only files which are already added and committed are tracked; that's what "tracked" means.

Try manually adding one of them via git add and it will tell you why it's ignoring them, and prompt you to use git add -f to add the file anyways.

You need to explicitly tell git to track any new files.

  1. Run git add filename to add the file to git's index.

  2. Run git commit to commit changes in your index.

git status should also show the list of untracked files and directories.

If you want to list all the files in the repo which are ignored by gitignore, you can run:

git ls-files . --ignored --exclude-standard --others

If you want to list all the untracked files in the repo:

git ls-files . --exclude-standard --others

In my case, there were no .dll references in the .gitignore file, and I had no global file. However, in the .git subdirectory, I found a file called ms-persist.xml. I closed all instances of Visual Studio, and then added my missing .dlls manually to that file. When I re-opened visual studio, the .dlls were showing as needing to be checked in. I checked them in and now I'm golden...

If you use SourceTree and the default setting it will ignore all DLLs by default... Tools=>Options=>Git then "Edit File"... add a "#" before .dll => "#.dll" ... save and close.

Then for Windows Explorer in your packages folder in open a GitBash terminal and type "git add ." and let it work, back into SourceTree wait a second and all those missing package DLLs will show up for you to commit and push.

You have a global .gitignore somewhere or further .gitignore files in subdirectories - relative to your project's root.

On Linux Systems and MacOS the global git-ignore is most likely in your Home ~/

~/.gitignore_global

On Windows it is likely in your User Directory. Either your local user (which you can find out by typing in ECHO %USERPROFILE% or whoami at the command-line.

If it is not there, then surely a .gitconfig is present instead. Look herein for the location of the gitignore (e.g. the User's Documents folder).

Edit: Use git config --list --show-origin to get details of the contributing git-settings and their corresponding file locations.

I faced a similar issue. I am unable to add .dll file from package directory to my git then i found gitignore_global.txt file as sourcetree automatically added this file as a global git ignore setting. I removed *.dll from gitignore_global.txt file and its work fine for me.

Location of gitignore_global.txt file as below

C:\Users\XXXX\Documents\gitignore_global.txt or you can find it out from sourcetree TOOL => OPTION => GIT tab and find out global ignore list

I know this question is very old, but I'm adding for others who may visit this question in the future. You can go modify your global ignore file as the answers above mentioned, but that will affect ALL of your git repos. If, instead, you'd like a more granular approach, you can just exclude either specific DLLs or specific folders in your individual project .gitignores. This overrides the all ignore settings and forces the files to be detected and handled by git. I think this is a better approach.

.gitignore (for your particular project)

# Custom ignores
!*.dll
# or
!My.specific.dll


# rest of .gitignore