My programs generally generate huge output files (~1 GB) which I do not want to be backing up to the git repository. So instead of being able to do
git add
create .gitignore file in your repository and you want to track only c files and ignore all other files then add the following lines to it....
*
!*.c
'*' will ignore all files
and ! will negate files be to ignored....so here we are asking git not to ignore c files....
The best solution to achieve this
create .gitignore
file in repository root
, and if you want to include only .c
file then you need to add below lines to .gitignore
file
*.*
!*.c
this will include all .c
file from directory and subdirectory recursively.
using
*
!*.c
will not work on all version of git.
Tested on
git version 2.12.2.windows.2
Late to the party, but my solution would be to have a directory for source files and a different directory for executables and program output, something like this:
+ .git
| (...)
+ bin
| my_exe.exe
| my_output.txt
+ src
some_file.c
some_file.h
... and then only add the stuff in src/
to my repository and ignore bin/
entirely.
I haven't had need to try this myself, but from my reading of TFM it looks like a negated pattern would do what you want. You can override entries in .gitignore with later negated entries. Thus you could do something like:
*.c
!frob_*.c
!custom.c
To have it ignore all .c files except custom.c and anything starting with "frob_"
If you need to ignore files but not a specific file inside a directory, here is how I did it:
# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt