This page looks best with JavaScript enabled

How would you exclude all extension-less executable from your repo?

 ·   ·  ☕ 2 min read

In last post, I expressed how we can export a single file from a git repo the its own repo, preserving their commit history. In this post, I will tell how I dealt with extension-less file to ignore them in my repo.

I have recently started learning C++ from Udemy, it’s a free course. I encourage you to take it if you are willing to learn C++. I was following the instructions on Linux. And special thing about working with C or C++ in Linux is that the executable you get has no extensions in it, unlike Windows, which has .exe extension.

It was a challenge for me to keep .cpp source files tracked, yet exclude the executable files. What would have I done? Without extension, I couldn’t do, for example, *.pyc, like I used to do in Python repositories. Keeping the only cpp files in staging area would have cluttered up my git status output every time a new executable was created, isn’t so?

But How

Remember what ! does in a boolean value? Correct, it negates it. The same could be applied in .gitignore's entries too. Normally what we do in gitignore file is, we write a statement per line to blacklist files or directory we want to exclude from VCS. With regex support that’s even more powerful.

How about this in .gitignore?


So what does the above lines do? As most of you might be aware of, * is shorthand for select all in regex terms. So what we are saying is:

  • ignore/blacklist everything
  • DO NOT blacklist any filename with any extension. Basically boils down to do not ignore any file.
  • DO NOT blacklist any directory. The / at last means we are dealing with directory.

Is there Another Option

Another option is to make a directory and move all the executable files there and exclude that directory with .gitignore. But I like this method more. It gives me the freedom to not mv files, again and again, everytime I compile a new file.


Share on

Santosh Kumar
Santosh Kumar
Fullstack Developer at Method Studios