.gitignore Everything by Default

(packagemain.tech)

22 points | by der_gopher 1 hour ago

13 comments

  • rcfox 29 minutes ago
    This seems like bad advice. I've very rarely committed extra files by accident, but I would 100% forget to unignore files I meant to commit.

    If you're doing an initial setup step to gitignore everything, why not just do an initial setup step to gitignore the usual files? Make a template that you copy into all of your repos.

    • gruez 24 minutes ago
      >This seems like bad advice. I've very rarely committed extra files by accident, [...]

      You clearly haven't seen the people who are lazy and so just do `git add . && git commit -m ... && git push -f origin` every time.

      • rcfox 22 minutes ago
        I'm not convinced people acting on muscle memory would remember to unignore the files either. They're going to lose work or have giant "oops, I forgot to commit these files" commits.
      • cush 19 minutes ago
        Now walk through exactly what would happen when those lazy people follow this approach…

        You see the issue right?

  • MatthiasPortzel 6 minutes ago
    [delayed]
  • caseyw 41 minutes ago
    I don’t ignore by default, but only stage the items I explicitly want.

    I can’t tell you how many times I’ve been pairing with someone when they just say “git add .”, I’m always confused by that choice.

    I get it, but I’ve seen more problems arise from adding all than being consistently selective. To each their own.

    • etbebl 24 minutes ago
      I use "git add ." (or rather -A), but I will always do a "git status" first to make sure I'm not doing something silly. Of course you still have to be careful about subdirectories, which is why I usually also do a "git status" again before committing.
      • noir_lord 9 minutes ago
        another `git status` then `git add .` folk here, it's a quick sanity check and then quicker and frankly it's just the habit I got into when I first started using git.

        I've never managed to get on with any UI for basic git tasks, they always end up been slower.

  • flexagoon 41 minutes ago
    > other junk (CLAUDE.md for example) that shouldn’t be in your repository

    How is CLAUDE.md/AGENTS.md "junk that shouldn't be in your repository"? If you're using agents for a project and have some project-specific rules for them, why would you want other people using agents in your repository to not have access to those rules and produce worse code?

    • hansvm 2 minutes ago
      IME people are usually shoving their personal preferences in CLAUDE.md, sometimes automatically as the agent updates the file with that developer's pet peeves.

      - Right now at $WORK, CLAUDE.md has a line saying to put one-off scripts in some gitignored place. That's fine if they're not worth checking in (IMO, you should build the tooling which would have made the script easy and check that in, but whatever), but that AI rule doesn't really keep them from being checked in -- developers manually review every line of code and decide what to check in -- that's just somebody deciding they'd rather not have to think so hard when running git add. Which is fine, but it directly conflicts with my preference for all AI-generated files to be plainly visible as a diff or with git status or something. They have a different diffing strategy, which is also fine, but that's just a dev's personal preference encoded in a whole-team doc.

      - Or, I have a prompt I use to encourage higher quality code before I have to manually inspect it. It basically says "delete $200 and 1hr." For somewhat obvious reasons, I don't run it on every piece of code the AI shits out. I make it available in the project for people who want to use it, but I don't even want it in my CLAUDE.md, much less the team's.

      - Similarly with whether to use git for checkpointing. I prefer to check the AIs output at each step. A colleague prefers to have it save its progress using git in 30+ commits on a side branch and then check them all at once. One of those workflows was in CLAUDE.md and absolutely is not anymore -- it's quite appropriate for a single developer's AI settings, but not for the team as a whole.

      Those settings files are a lot closer to .vscode directories or other dev-specific editor configuration. Project-specific information should be exposed differently.

  • ryanbrunner 7 minutes ago
    The problem with this approach (that their first example already demonstrates), is that you'll almost immediately start with a "this type of file is OK" solution, and whether something should go in git doesn't really have a super strong correlation with file type.

    It hobbles `git status` and essentially forces you to keep track of what you've changed yourself (since ignored files won't show up there), and it can instill a false sense of security that `git add .` is safe when it might not be.

  • matthewmc3 1 hour ago
    I'm not convinced about ignoring everything, but one of the best changes I ever made to my git workflow was ignoring all dotfiles by default by adding `.*` to ~/.config/git/ignore.

    My projects do now have to have a boiler plate of unignoring the common ones (!.gitignore, !.gitattributes, !.github, !.editorconfig, etc), but then I'm free at any point to throw .foo.lang files, or .tmp/.cache dirs, or Claude helpers like .code_analysis.md, or .todos.txt, or whatever in my project without managing the fallout of forgetting to manage the .gitignore. I'm surprised more people don't go this route.

    • GranPC 40 minutes ago
      Couldn't you put !.gitignore et al in your global config file?
    • flexagoon 39 minutes ago
      I have `playground/` in my ignore config, that way I can just create a playground directory for any project and do stuff in there
    • der_gopher 1 hour ago
      I do the same
  • Lindby 41 minutes ago
    `git add -p` is your friend to avoid adding unintended files/changes.
    • eterm 11 minutes ago
      What does that do, add already tracked files only?
      • jdpage 9 minutes ago
        It interactively shows you each change that would be added and lets you decide whether it should be staged or not. Down to the hunk level, so you can partially stage a file if you so choose.
  • queezey 21 minutes ago
    This approach is actually ideal for Docker ignore files to reduce bloat of your Docker images.
    • jdpage 7 minutes ago
      Yeah, I don't see myself using this for Git (where it's very easy to see what you're adding, but not obvious and high-cost if you're missing something), but it's my standard approach for Docker images (where it's easy to tell that something is missing, and low-cost to fix it).
  • vehemenz 26 minutes ago
    It's a neat approach for the current problem of untracked dotfile accumulation.

    The real problem is that the entire reason to use git at this point is because of the conventions established around it. There are better VCSes and methods now, but they "break" the conventions of git (which honestly sucks, but it is what it is).

  • internet101010 16 minutes ago
    Put gates in place to block all .freeadvertising folders except for the ones that the project relies on.
  • outloudvi 39 minutes ago
    If people want to apply this mechanism, it shall be not much of a hassle for writers of most (modern) programming languages, as they mostly have some `src/` directory (maybe also some `tests/`) that contains all source codes for a quick `git add`.

    For Golang users, I dunno...

  • monster_truck 14 minutes ago
    I'm so sick of these articles telling me what to do with meaningless subjective justifications
  • laruss5 3 minutes ago
    [flagged]