2010-05-01 10 views
7

Por ejemplo, me gustaría modificar la página de inicio de sesión, por lo que me registra automáticamente.¿Cómo hacer cambios que solo yo puedo ver?

Quiero esos cambios en SOLAMENTE trabajo en mi estación de desarrollo y no ser visible en push. si lo hago en una rama, de alguna manera tendría que desunir ese cambio antes de cada empuje.

es compatible con git?

Respuesta

2

¿Por qué no utilizar la configuración a gitattributes filter driver?

smudge

Cada vez a la caja de su directorio, se comprobará a través de un script en el paso smudge) para ese archivo (y sólo ese archivo) si se cumplen ciertas condiciones (como en "este es o no es su estación de desarrollo ") y modificará el contenido en consecuencia.
El paso clean restauraría su contenido o al menos ignoraría esa modificación en particular.

+0

intentaré eso, thx – IAdapter

0

No estoy seguro de entender la pregunta: ¿por qué no puedes simplemente ramificarte? Tenga master como su rama principal y pública, y siga redefiniendo su rama privada en master (o fusiones maestras con su sucursal privada). Nunca arriesgue sus posibilidades al master, solo lleve los cambios del master a su sucursal privada.

Si realiza cambios en su sucursal privada que desea compartir con master, no hay ningún problema para seleccionar los cambios en el maestro.

+1

pero de esta manera SIEMPRE tendré que recordar NO incluir ese cambio (y lo olvidaré tarde o temprano). ¿Hay alguna forma de escribir script para ignorar ese cambio en la fusión? – IAdapter

+0

Si realmente desea bloquear la exposición de estos cambios, puede clonar su repositorio en otro lugar, pero no agregar ningún control remoto en ese clon que apunta a un repositorio público. Entonces, cualquier cambio que realice en ese repositorio se queda allí: no hay control remoto al que pueda presionar.Por supuesto, aún puede obtener estos cambios expuestos si obtiene de ese clon privado, pero eso requeriría un tipo diferente de acto explícito de lo que normalmente hace. Por lo general, "transfiere" sus repositorios locales a los públicos, no _pull_ desde sus clones locales a otros repositorios locales. – wilhelmtell

7

Si usted tiene al menos Git 1.7.0, que puede gustarte este poco de 'cañerías':

git update-index --skip-worktree -- path 

Desde el git update-index manpage under “Skip-worktree bit”: poco

Skip-worktree se puede definir en una sola (larga) frase: Al leer una entrada, si está marcada como skip-worktree, entonces Git pretende que su versión de directorio de trabajo está actualizada y lee la versión de índice en su lugar.

Para mayor información, "leer" significa verificar la existencia de archivos, leer los atributos del archivo o el contenido del archivo. La versión del directorio de trabajo puede ser presente o ausente.

El "bit skip-worktree" es la base para el sparse checkout mechanism documented in the git read-tree manpage`.


Hay un ‘bit’ relacionado en versiones anteriores de Git (git update-index --assume-unchanged), pero no debe ser utilizado para el propósito de la OP. It seems like it might be useful for the OP's situation, pero Git's maintainer has said that its contract (the “promise”) makes it unsuitable for such purposes.

+0

Supongo que se supone que la segunda línea es: 'git update-index --skip-worktree -path' ? – wilhelmtell

+0

@WilhelmTell: Sí, gracias. Fijo. –

Cuestiones relacionadas