How do I prevent git from requiring sudo on every git command

Solution 1:

A couple of things are going on here:

  • When you sudo git checkout ..., all those files are owned by the root user and root group. With the standard permissions, that's why subsequent alterations to those files require you be root.

  • /var/www/ by default is owned by www-data group. Something your user is not by default.

The easiest way to write in /var/www/ is to just add your user to the www-data group. You can of course, change the directory to be owned by your user but this can have some nasty knock-on effects if you're not pre-empting them.

You'll need to re-log in after adding your user to the www-data group.

In your case specifically, you're going to need to fix your current mess of root-owned data. You can either delete it as root (and re-checkout) but if you have unsaved work, it'll just be cleaner to pull everything back to your user. The following example is extremely lazy and assumes what we're talking about is the only thing in /var/www/:

sudo chown -R www-data: /var/www/