Cómo mover la twig de trabajo actual a la twig principal en git

Actualmente tengo uno de los proyectos que contiene más sucursales. twig principal aún no se fusiona mucho time. Así que quiero cambiar a maestro con el último código.

¿Puedes darme los commands y pasos necesarios?

Permítanme reformular mi pregunta.

Estoy trabajando en un proyecto con diferentes twigs. Los últimos cambios fueron en alguna twig que no sea maestra. Ahora mi requisito es: ¿hay alguna manera de mover la twig de trabajo actual a la maestra sin fusionarla con la maestra, para evitar conflictos?

Si desea tener en el maestro exactamente el mismo estado que en other_branch y save el historial, haga lo siguiente (es más suave que el reset ):

 git checkout master git checkout other_branch . 

(con período)

Esto hará que la copy completa de other_branch a current ( master ): Luego haga commit regular.

 git add --all git commit -m "* copy other_branch to master working tree" 

¿Desea fusionar una twig 'desarrollar' en maestra?

 git checkout master git merge develop 

¿O desea fusionar los cambios de maestro en su twig de desarrollo?

 git checkout develop git merge master 

En primer lugar, trataría de fusionarlo para master y ver si realmente hay muchos conflictos: la fusión de git es excelente solo para marcar conflictos genuinos. Si se asegura de que su git status esté limpio antes de comenzar y de que hay demasiados conflictos, puede volver con:

 git reset --merge 

Sin embargo, si solo desea que su master actual sea igual que su otra twig, puede hacerlo con:

 git checkout master git reset --hard other-branch 

Sin embargo, esa es generalmente una mala idea ya que:

  1. Estás tirando todo el trabajo en tu twig principal. ¿Quizás quieras esa historia más tarde? (Siempre podría "hacer una copy de security" de su twig principal con el maestro git branch old-master master antemano).
  2. Está reescribiendo el historial de la twig master , por lo que si alguna vez ha compartido esta twig con alguien, los resultados serán confusos para ambos.
  3. git reset --hard siempre debe usarse con precaución, ya que descartará todos los cambios no comprometidos que tenga.

Si entiendo tu inglés correctamente, no deseas fusionar tus cambios nuevamente en el maestro, ¿simplemente restablecer el maestro para apuntar a la última confirmación en tu twig actualmente desprotegida? Para hacer esto, usa:

 git branch -f master 

necesita fusionar su twig actual en la twig principal. la forma en que lo hago es:

 1) git fetch origin # get all branches from server 2) git rebase master # update your local master to the origin master, in case master has changed upstream 3) git checkout <branch> # go to your branch 4) git rebase master # rebase your branch to master; applies your branch's changes ontop of the master, where it diverged 5) git checkout master # go back to master 6) git merge <branch> # merge your branch into master. since you rebased, this should be trivial 7) git push # push your master upstream 

Si desea realizar algunas confirmaciones de una branch a la siguiente, podría usar cherry-picking .

Esto solo requiere ciertas confirmaciones de branch a master , pero, por supuesto, no está garantizado que no ocurran conflictos.

Ver mi respuesta a Administración de revisiones cuando la twig de desarrollo es muy diferente de la maestra?

Sin embargo, si desea tomar todas las confirmaciones de la branch en la master , no logrará fundirse y resolver conflictos (a less que se git reset --hard other-branch la bifurcación master como se describe– y se desaconseje – con Mark ).

Si desea fusionar la twig de trabajo en el maestro, también puede usar rebase, que es un poco más limpio.

 git checkout master git rebase <working branch> 

Si desea copyr los files desde la twig al maestro, ejecute los siguientes commands.

  1. GIT Checkout Master
  2. git checkout branch_from_which_you_have_to_copy_the_files_to_master.

    (con período)

  3. git add –todo

  4. git push -u origin master

  5. git commit -m "copy from branch to master"

Tal vez no es tan limpio, pero funciona para mí

  • git pull #para get todos los cambios
  • cambiar a my_branch
  • copyr todos los files tmp dir
  • cambiar al maestro
  • eliminar todos los files en el maestro
  • copyr files de tmp dir
  • cometer