mirror of
https://github.com/jbranchaud/til
synced 2026-01-02 22:58:01 +00:00
Add Exclude A Directory During A Command as a Git TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
||||
|
||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||
|
||||
_1637 TILs and counting..._
|
||||
_1638 TILs and counting..._
|
||||
|
||||
See some of the other learning resources I work on:
|
||||
- [Ruby Operator Lookup](https://www.visualmode.dev/ruby-operators)
|
||||
@@ -333,6 +333,7 @@ If you've learned something here, support my efforts writing daily TILs by
|
||||
- [Dropping Commits With Git Rebase](git/dropping-commits-with-git-rebase.md)
|
||||
- [Dry Runs in Git](git/dry-runs-in-git.md)
|
||||
- [Exclude A File From A Diff Output](git/exclude-a-file-from-a-diff-output.md)
|
||||
- [Exclude A Directory During A Command](git/exclude-a-directory-during-a-command.md)
|
||||
- [Excluding Files Locally](git/excluding-files-locally.md)
|
||||
- [Extend Git With Custom Commands](git/extend-git-with-custom-commands.md)
|
||||
- [Files With Local Changes Cannot Be Removed](git/files-with-local-changes-cannot-be-removed.md)
|
||||
|
||||
32
git/exclude-a-directory-during-a-command.md
Normal file
32
git/exclude-a-directory-during-a-command.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Exclude A Directory During A Command
|
||||
|
||||
Many of the git commands we use, such as `git add`, `git restore`, etc., target
|
||||
files and paths relative to the current directory. This is typically exactly
|
||||
what we want, to stage and unstage and so forth the files and directories in
|
||||
front of us.
|
||||
|
||||
I recently ran into a situation where I needed to restore a small subset of
|
||||
changes. At the same time, I had a massive number of auto-generated files
|
||||
recording HTTP interactions (hundreds of files, modified on the working tree).
|
||||
I wanted to run a `git restore`, but wading through all those HTTP recording
|
||||
files was not feasible.
|
||||
|
||||
I needed to exclude those files. They all belonged to a `spec/cassettes`
|
||||
directory. I could exclude them with a _pathspec_ magic signature pattern which
|
||||
is used to alter and limit the paths in a git command.
|
||||
|
||||
A _pathspec_ magic signature is a special pattern made up of a `:` followed by
|
||||
some signature declaring what the pattern means.
|
||||
|
||||
The `(exclude)`, `!`, and `^` magic signatures all mean the same thing —
|
||||
exclude. So, we can exclude a directory from a `git restore` command like so:
|
||||
|
||||
```bash
|
||||
$ git restore --patch -- . ':!spec/cassettes'
|
||||
```
|
||||
|
||||
We've employed two pathspec patterns here. The first, `.`, scopes everything to
|
||||
the current directory. The second, `':!spec/cassettes'` excludes everything in
|
||||
the `spec/cassettes` directory.
|
||||
|
||||
See `man gitglossary` for more on _pathspecs_.
|
||||
Reference in New Issue
Block a user