Me encontré con que la estantería/retomar cambios aplazados comandos en TFS son muy práctico y muy sencillo de utilizar. ¿Cuál es el equivalente en Git ?

aquí está el escenario en TFS :

  • He hecho cambios en el tronco
  • Puedo dejar de lado : el conjunto de cambios se guardan en el servidor (con etiqueta) y me sale la fuente de nuevo antes de que los cambios
  • Yo trabajo en el tronco
  • Alguien puede retomar cambios aplazados : obtener el conjunto de cambio en su área de trabajo

Sé que hay un comando de llamada cherry-pick pero i»m no está seguro de que el flujo de trabajo y si se ajusta a la necesidad.

InformationsquelleAutor MatthieuGD | 2010-06-18

3 Comentarios

  1. 81

    Lo que usted describe es similar a git stash, con excepción ya con git tiene su propio repositorio (no solo en una en un servidor), sólo usted puede conseguir que el conjunto de cambios de la espalda.

    La idea general es:

    # do some stuff
    vim foo/bar.c
    # stash away your changes
    git stash
    
    # do some other things...
    
    # retrieve your changes
    git stash pop
    

    Si quería que alguien más tenga acceso a este conjunto de cambios, que desea en lugar de comprometerse a un trabajo de sucursal:

    # make yourself a branch
    git checkout -b temp-featureA
    # commit to it
    git add foo/bar.c; git commit
    
    # now you push this branch (or they could just fetch straight from you)
    git push origin temp-featureA
    
    
    # Now, in someone else's repo:
    # Fetch updates
    git fetch origin
    # Make a branch tracking the remote branch
    git branch temp-featureA origin/temp-featureA
    
    # Either check it out:
    git checkout temp-featureA
    # or cherry-pick it, to apply the changes somewhere else:
    git cherry-pick temp-featureA
    # or, if it's multiple commits, rebase it!
    git rebase --onto my-branch start-of-featureA temp-featureA
    
    • Alguna idea de qué hacer si no quiero cometer estos cambios en la shelveset? Hemos connectionstrings cambiamos a golpear a los diferentes entornos, pero no queremos cambiar estas en el maestro, sólo para depuración local, si los tenemos en una rama que será confirmada cuando empujamos si las mezclamos en nuestra sucursal
    • Hay una manera de esconder mientras que la preservación de los cambios locales? Puede ser alijo seguido por el alijo de aplicar?
    • Sí, alijo, a continuación, guardar aplican esencialmente a hacer eso. Pero estoy un poco confundido ¿por qué te gustaría. En general si vas a esconder es porque quiero los cambios a desaparecer temporalmente, y te vas a poner de nuevo en algún otro lugar. Si vas a mantenerlos alrededor y mantener el trabajo, usted puede ser mejor hacer un commit. Usted puede, cherry-pick que se cometen en otros lugares, en lugar de aplicar un alijo, y siempre se puede squash lejos posteriormente si desea limpiar.
    • En realidad, esto no es realmente el mismo que el de un TFS Shelveset. Si estoy trabajando en un local de git branch…al final del día, quiero decir…con todas las verrugas y errores de compilación….poner este trabajo en el servidor de seguridad. Por lo tanto, si mi disco duro se bloquea, no me lo pierda todo. Sin embargo, no quiero empujar mi trabajo hasta la rama remota sin embargo, porque es incompleta. Mi sucursal local es el seguimiento de la sucursal remota. Cascabel listas 8 separar los comandos de git para organizar esta…en TFS…es uno de los comandos…dejar de lado.
  2. 28

    Lo que quieres hacer se logra con el viejo y simple de ramificación en git.

    De una buena respuesta de StackOverflow por JaredPar:

    De la estantería es una manera de guardar todos los cambios en su caja sin registrar. Los cambios se guardan en el servidor.

    Esto es análogo a comprometerse a una rama y empujando a un servidor de git.

    Cómo hacerlo:

    Digamos que usted está trabajando en el «maestro» de la rama y decide implementar esta característica X. empezar bien por ella, pero su jefe le dice que la función Y las necesidades de aplicación tan pronto como sea posible. Phil en el siguiente cubo sobre voluntarios para finalizar la función de X, mientras que hace función de Y. he Aquí lo que debes hacer:

    Hacer una nueva rama y cambiar a ella:

    $ git checkout -b feature-x
    

    Confirmar los cambios:

    $ git add filethatyouchanged.cc
    $ git commit -m 'partial implementation of feature X'
    

    Empujar a un servidor que Phil puede ver:

    $ git push origin feature-x
    

    Volver a la rama master (que no ha cambiado):

    $ git checkout master
    

    También puede ser que desee para crear de forma proactiva una nueva rama de la característica Y:

    $ git checkout -b feature-y
    

    Phil ahora se puede tirar hacia abajo de su función de X trabajo y recoger donde lo dejó:

    phil$ git fetch origin
    phil$ git checkout -t origin/feature-x
    
    • aunque no es tan barato como en git, es realmente almacenados en el repositorio, y si la caución es distribuido, que significa que usted puede tener su aplazar sirve para cualquier equipo de la repo, sin que se convierta en un commit. (TFS2010) Esto es muy útil si hay algún tipo de política como CI o Dependientes de Check-In (obligatorio lado del servidor construir en cada check-in)
  3. 5

    git stash es un poco parecido, excepto que se limita a su árbol de trabajo.

    En un DVCS, para lograr ese tipo de flujo de trabajo, debe:

    • cometer los cambios actuales en una nueva rama
    • obtener el original de la rama donde se puede ir, con ninguno de los cambios que había introducido (pero comprometidos en la nueva sucursal)
    • empujar esa nueva rama de un desnudo de repo
    • permitir que otro desarrollador para que se tire de la nueva rama y combinar a su rama actual.

    Otra manera sería dejar que el otro desarrollador para obtener su rama (donde se han cometido especial conjunto de cambios), y cherry-pick es, pero que no es recomendado, para palmitas comete son muy difíciles de seguir.

    • Muchas gracias por tu respuesta, me marcó Jefromi la respuesta de porque me da un ejemplo, pero la suya fue también de gran ayuda.
    • Jefromi respuestas son siempre una buena opción 😉

Dejar respuesta

Please enter your comment!
Please enter your name here