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?

  • nighty@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    Maybe you can create a bash function (and add it to your bash config files) that only executes the rm -rf command we have a .git file around?

    function git-rm {
      if [ -d "$1" ] && [ -d "$1/.git" ]
      then
        rm -rf $1;
      fi
    }
    
  • biribiri11@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    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.

  • treadful@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year 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.

  • friend_of_satan@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    If you’re scared to do rm -rf, do something else that lets you inspect the entire batch of deletions first. Such as:

    find .git ! -type d -print0 | xargs -0 -n1 echo rm -fv

    This will print out all the rm -fv commands that would be run. Once you’ve verifid that that’s what you want to do, run it again without echo to do the actual deletion. If you’re scared of having that in your history, either use a full path for .git, or prepend a space to the non-echo version of the command to make it avoid showing up in your shell history (assuming you have ignorespace in your HISTCONTROL env var)

  • bloodfart@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

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

  • qaz@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    You can use ls <PATH> first to check you are deleting the right files. I do this and I’ve never accidentally deleted the wrong files (using rm).

  • Mactan@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

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

    i really try to avoid rf for myself

  • krnl386@lemmy.ca
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year 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?

  • Kekin@lemy.lol
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year 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

    • d_k_bo@feddit.de
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      1 year 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.

  • gomp@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 year 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)

  • ssm@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

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