evitar que el pago de git sobrescriba un file

Otro desarrollador comprobó su .rvmrc en el git repo. Desde entonces lo eliminé y lo agregué a gitignore, pero cada vez que necesito retroceder en el time, sobrescribe mi .rvmrc. Estoy en OSX, así que descubrí que puedo utilizar el mecanismo de locking de files OSX (checkbox "Bloqueado" en Obtener información) para evitar que esto suceda en mi máquina de desarrollo, pero ¿cómo se haría esto en Linux?

Lo llamé para rootearlo y lo modifiqué a 444, pero git (ejecutado como mi usuario normal), de alguna manera trasciende la necesidad de propiedad y permiso y aún sobrescribe el file.

Irónicamente, aunque el comportamiento pnetworkingeterminado de git es tratar los files sin seguimiento como preciosos, agregar el file a .gitignore le dice a git que puede trash el file cuando lo desee.

Las inputs en .gitignore se .gitignore más comúnmente para indicar files generados, y como tal, git las sobrescribirá en silencio. Las inputs en .git/info/exclude se supone que deben usarse para las versiones locales de los files de configuration.

Lea esta discusión en su totalidad, ya que parece haber cierta confusión en cuanto a la diferencia entre los dos. Acabo de probar esto, y las inputs en .git/info/exclude están protegidas cuando retrocedes en el time, produciendo "error: el file de tree de trabajo sin seguimiento '.rvmrc' se sobrescribe con merge". Este comportamiento diferente entre los dos podría no ser deliberado, según Junio ​​C Hamano. Sin embargo, si puede eliminar la input de .gitignore y moverla a .git/info/exclude , puede hacer que esto funcione, al darse count de que esta última no está versionada o compartida entre repositorys y requeriría cooperación manual con su colega .

En cuanto al problema de permissions, mira esto:

 $ touch foo $ ls -l foo -rw-r--r-- 1 josh staff 0 Oct 1 09:55 foo $ sudo chown root:wheel foo $ ls -l foo -rw-r--r-- 1 root wheel 0 Oct 1 09:55 foo $ unlink foo $ ls -l foo ls: foo: No such file or directory 

En Unix, la capacidad de crear o eliminar un file se basa únicamente en los permissions del directory que lo contiene. Los permissions en el file solo son para modificaciones en el file (desafortunadamente en su caso). La utilidad rm verifica los permissions en el file como cortesía, pero el unlink es de nivel inferior y llama ciegamente a la llamada del sistema.