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?

  • @[email protected]
    link
    fedilink
    English
    9011 months ago

    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.

  • @[email protected]
    link
    fedilink
    211 months ago

    use relative paths (cd into the directory below your repository) and use tab completion, and you won’t have problems.

  • @[email protected]
    link
    fedilink
    7
    edit-2
    11 months ago

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

    E:fb

  • Mactan
    link
    fedilink
    311 months ago

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

    i really try to avoid rf for myself

  • davel [he/him]
    link
    fedilink
    English
    37
    edit-2
    11 months ago

    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.

  • @[email protected]
    link
    fedilink
    English
    911 months ago

    Use rm -rf. If you are scared of mistakes, type echo rm -rf nameofdirectory, check it, go back, delete the echo and press enter.

  • Björn Tantau
    link
    fedilink
    1611 months ago

    Maybe use a graphical file manager?

    Or move the folder to /tmp or so.

    • @[email protected]OP
      link
      fedilink
      English
      411 months ago

      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.

        • @[email protected]OP
          link
          fedilink
          English
          311 months ago

          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.

          • @[email protected]
            link
            fedilink
            211 months ago

            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’.

      • @[email protected]
        link
        fedilink
        611 months ago

        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
          link
          fedilink
          211 months ago

          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

  • Pika
    link
    fedilink
    English
    1
    edit-2
    11 months ago

    honestly I don’t think there is a better way, like others have said you can use a trash program or you can chmod the git directory before deleting but, I would recommend against the comments saying alias the command, that can lead to even bigger problems if you typo thr alias or mess up in the script. rf can’t break anything unless you say the wrong directory which would be the same with aliases anyway,

    My recommendation out of them all would be using a trash program to move it to the trash that way if you do screw up the location you have a way to restore it otherwise you could make a script to list the files affected using ls and then prompt a yes/no prompt using read before doing the rm script, but that’s something you definitely want to test in a sandbox or user restricted environment if you’re not used to scripting in case something breaks

  • @[email protected]
    link
    fedilink
    1211 months ago

    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)

  • @[email protected]
    link
    fedilink
    9
    edit-2
    11 months ago

    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?

  • @[email protected]
    link
    fedilink
    12
    edit-2
    11 months ago

    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

    • @[email protected]
      link
      fedilink
      16
      edit-2
      11 months ago

      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.