Place a .gitignore
file in the root of the repository. In this file you would indicate patterns of files not to be checked in. (For example, build output or user-specific files.)
For example, in a Visual Studio project the act of building would create bin
and obj
folders, so this file might simply contain the text:
bin
obj
Wildcards also work, so to ignore .user
files I might also include:
bin
obj
*.user
There are probably examples floating around of more general-purpose .gitignore
files which cover 99% of cases. For example, a .NET open-source project I work on has this:
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/
# mstest test results
TestResults
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.log
*.vspscc
*.vssscc
.builds
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Publish Web Output
*.Publish.xml
# NuGet Packages Directory
packages
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
[Bb]in
[Oo]bj
sql
TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
I imagine browsing a few popular GitHub repositories will yield other such examples. GitHub, of course, even has a repository of examples. As you can see though, you can target a lot of specific things and tailor the .gitignore
rules to your repository/project. You're correct in that dependency libraries need to be included whereas build output needs to not be included. As long as they're separately identifiable you're good to go.
For example, one might put dependency libraries in a folder called lib
and explicitly add that to the git repository. Indeed, once added a file will not be ignored even if it's in the .gitignore
pattern rules. Those rules tell git which files not to add, but already-added files continue to be tracked.