gitpermissionsresetgitolite

What about 'git reset --hard' with read permission (local/remote)?


I'm new to Git and I am trying to understand the concept. Maybe someone can help me with a few theoretical questions?

So there is a Git on the remote server and a cloned git on my local computer.

After cloning the git to my local computer with a read permission (gitolite with 'R' permission), can I do any damage to the git on the remote server?

If I do a 'git reset --hard' (I know that there is often a strong advise against it), does this only reset the changes on my local computer or also on the remote server?
Is there a difference if I work with R or RW+ authorization?


Solution

  • First, Git itself has no notion of 'R' or 'RW+': those are read-write permission managed by gitolite, an authorization layer called through SSH (forced command: the ~git/.ssh/Authorized_keys file calls the gitolite script) or HTTPS.

    git reset --hard is purely a local function, which does involve:

    If you were to reset HEAD to a different commit, the only way to push that new HEAD would be through the Git operation git push --force.

    That is where Gitolite comes, with the permission field of the access rules included in the (remote) gitolite-admin repository.

    Only an access rule including RW+ would allow you to push --force.
    R is only for cloning and fetching, it prevents pushing (force or not).