Git repos have lots of write protected files in the .git directory, sometimes hundreds, and the default rm my_project_managed_by_git will prompt before deleting each write protected file. So, to actually delete my project I have to do rm -rf my_project_managed_by_git.

Using rm -rf scares me. Is there a reasonable way to delete git repos without it?

  • treadful@lemmy.zip
    link
    fedilink
    English
    arrow-up
    91
    ·
    5 个月前

    Using rm -rf scares me. Is there a reasonable way to delete git repos without it?

    I don’t know what to tell you, that’s the command you need to use.

    If you’re that worried you’re going to nuke important stuff, make backups, and don’t use sudo for user files.

    • ButtonsOP
      link
      fedilink
      English
      arrow-up
      14
      arrow-down
      3
      ·
      edit-2
      5 个月前

      More like, I’m afraid of the command doing more than I’m trying to do.

      What I want to do is ignore prompts about write-protected files in the .git directory, what it does is ignore all prompts for all files.

      • Butt Pirate@reddthat.com
        link
        fedilink
        arrow-up
        30
        ·
        5 个月前

        You just need to do this then

        cd git-project
        rm -rf .git
        cd ..
        rm -r git-project
        

        With rm -r is for ®ecursion and -f is for F(force) disabled the prompting. So, use -f on the .git directory which has the files you want to obliterate, and leave it off for the safety prompts.

          • ButtonsOP
            link
            fedilink
            English
            arrow-up
            11
            arrow-down
            6
            ·
            5 个月前

            That’s a good example. If I’m regularly running a command that is a single whitespace character away from disaster, that’s a problem.

            Imagine a fighter aircraft that had an eject button on the side of the flight stick. The pilot complains “I’m afraid I might accidentally hit the eject button when I don’t need to”, but everyone responds “why would you push the eject button if you don’t want to eject?”, or “so your concern is that the eject button will cause you to eject…?” – That’s how I feel right now.

            • IsoKiero@sopuli.xyz
              link
              fedilink
              English
              arrow-up
              4
              ·
              5 个月前

              I understand the mindset you have, but trust me, you’ll learn (sooner or later) a habit to pause and check your command before hitting enter. For some it takes a bit longer and it’ll bite you in the butt for few times (so have backups), but everyone has gone down that path and everyone has fixed their mistakes now and then. If you want hard (and fast) way to learn to confirm your commands, use dd a lot ;)

              One way to make it a bit less scary is to ‘mv <thing you want removed> /tmp’ and when you confirmed that nothing extra got removed you can ‘cd /tmp; rm -rf <thing>’, but that still includes the ‘rm -rf’ part.

            • OneCardboardBox@lemmy.sdf.org
              link
              fedilink
              English
              arrow-up
              2
              ·
              edit-2
              5 个月前

              How about writing a script to automate the deletion, thus minimizing the chance of human error being a factor? It could include checks like “Is this a folder with .git contents? Am I being invoked from /home/username/my_dev_workspace?”

              In a real aviation design scenario, they want to minimize the bullshit tasks that take up cognitive load on a pilot so they can focus on actually flying. Your ejector seat example would probably be replaced with an automatic ejection system that’s managed by the flight computer.

          • CarrotsHaveEars@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            5 个月前

            Generally that is not a concern because regular users won’t be able to rm anything else other than those in his own $HOME.

            Another thing I want to say is, command line is for careful users. If someone is careless, they should create a wrapper around rm, or just use a FM.

            • ffhein@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              5 个月前

              If someone is careless, they should create a wrapper around rm, or just use a FM.

              I think that’s the situation OP is in… They don’t trust themself with these kinds of commands, while other commenters here are trying to convince them that they should just use rm -rf anyway

      • Gamma
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 个月前

        What about adding the flags last?

        rm deletethisrepo -rf
        
  • davel [he/him]@lemmy.ml
    link
    fedilink
    English
    arrow-up
    37
    arrow-down
    2
    ·
    edit-2
    5 个月前

    I’ve shot myself in the foot enough times over the years with rm -rf. Now I use trash-cli. I don’t know what package manager(s) you use, but I install it via Homebrew.

    • ButtonsOP
      link
      fedilink
      English
      arrow-up
      4
      arrow-down
      14
      ·
      5 个月前

      That’s a good suggestion for some, but I’m quite comfortable with the command line.

      It’s not that I’m irrationally scared of rm -rf. I know what that command will do. If I slow down an pay attention it’s not as though I’m worried “I hope this doesn’t break my system”.

      What I really mean is I see myself becoming quite comfortable typing rm -rf and running it with little thought, I use it often to delete git repos, and my frequent use and level of comfort with this command doesn’t match the level of danger it brings.

      Just moving them to /tmp is a nice suggestion that can work on anywhere without special programs or scripts.

        • ButtonsOP
          link
          fedilink
          English
          arrow-up
          3
          arrow-down
          6
          ·
          5 个月前

          Just checked my command history and I’ve run 60,000 commands on this computer without problem (and I have other computers). I guess people have different ideas of what “comfortable” means, but I think I consider myself comfortable with the command line.

          I have shot myself in the foot with rm -rf in the past though, and screwed up my computer so bad the easiest solution was to reinstall the OS from scratch. My important files are backed up, including most of my dotfiles, but being a bit too quick to type and run a rm -rf command has caused me needless hours of work in the past.

          I realized the main reason I have to use rm -rf is to remove git repos and so I thought I’d ask if anyone has a tip to avoid it. And I’ve found some good suggestions among the least upvoted comments.

          • t_378@lemmy.one
            link
            fedilink
            arrow-up
            2
            ·
            5 个月前

            I’m the same as you! I recommend “trash-cli”, then you can undo if you mess something up. You can even set an alias to echo “wrong command” if you use ‘RM’.

      • somethingsomethingidk@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        5 个月前

        If you’re making backups of things you care about and not running sudo rm -rf the command isn’t really dangerous.

        But +1 for having it in /tmp I have a bash function I call tempd that is basically cd $(mktemp -d) I use it so much for stuff I dont really care to keep.

        • dave@hal9000@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          5 个月前

          Never heard of mktemp before, that’s need. Come to think of it I never thought about how /tmp is really used by the system in the first place, time to do do studying I guess

  • gomp@lemmy.ml
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    5 个月前

    The problem is that rm -rf shouldn’t scare you?

    What are the chances something like

    ~/projects/some-project $ cd ..
    ~/projects $ rm -fr some-project
    

    may delete unexpected stuff? (especially if you get into the habit of tab-completing the directory argument)

  • Kekin@lemy.lol
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    5 个月前

    A tip I saw some time ago is to do:

    rm folder -rf

    Additionally you could move the git folder to the trash folder. I think it’s usually located at $HOME/.local/share/trash/files/

    Then you can delete it from the trash once you’re certain you got the right folder

    • d_k_bo@feddit.de
      link
      fedilink
      arrow-up
      16
      ·
      edit-2
      5 个月前

      Additionally you could move the git folder to the trash folder. I think it’s usually located at $HOME/.local/share/trash/files/

      Moving something to the trash files folder isn’t the correct way to trash it, since the Trash specification requires storing some metadata for each trash item.

      You should use eg. trash-cli instead.

  • krnl386@lemmy.ca
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    5 个月前

    If you’re that worried, why not run chmod -R u+w .git inside the project dir to “un write-protect” the files, then just ascend to the directory containing the project dir (cd …) and use rm -r without -f?

    The force flag (-f) is the scary one, I presume?

  • bloodfart@lemmy.ml
    link
    fedilink
    arrow-up
    7
    arrow-down
    1
    ·
    edit-2
    5 个月前

    Cd into the directory first, then run rm -rf, then cd back out and rm -r just the directory.

    E:fb

  • biribiri11@lemmy.ml
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    5 个月前

    If you’re nervous about rm, there’s many alternatives that work by moving a file to your recycling bin instead of deleting it outright. I think the current fun one is trash-rs, but some distros package trash-cli.

  • flux@lemmy.ml
    link
    fedilink
    arrow-up
    5
    ·
    5 个月前

    You should have backups. Preferably also snapshots. Then rm will feel less scary.

  • Mactan@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    5 个月前

    its a bit verbose but my preference is rm -r --interactive=never directoryname

    i really try to avoid rf for myself