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?
Cd into the directory first, then run rm -rf, then cd back out and rm -r just the directory.
E:fb
its a bit verbose but my preference is rm -r --interactive=never directoryname
i really try to avoid rf for myself
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)
chmod -R 777 my_project_managed_by_git && rm -r my_project_managed_by_git
https://github.com/nivekuil/rip This is what you’re looking for
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.git rebase doesn’t work?
That or an oil change
You should have backups. Preferably also snapshots. Then rm will feel less scary.
So… you’re afraid of the command that does the thing you’re trying to do?
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.What about adding the flags last?
rm deletethisrepo -rf
so why not
rm -rf folder/.git/*
thenrm -r folder/*
Maybe they’re afraid of accidentally writing
rm -rf folder/.git /*
or somethingThat’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.
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.
Are you regularly deleting git repos?
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.
deleted by creator
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.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
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.
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).Use rm -rf. If you are scared of mistakes, type
echo rm -rf nameofdirectory
, check it, go back, delete theecho
and press enter.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
OSX - mv my_project ~/.Trash
chmod -R
the directory first?This, lol just remove write protection if -f is too spooky