tag remove practices commits commands best git merge branch github pull

remove - Git tira una rama determinada de GitHub



git tags best practices (10)

Pero me sale un error "! [Rechazado]" y algo sobre "no avance rápido"

Esto se debe a que Git no puede combinar los cambios de las ramas en su maestro actual. Supongamos que ha extraído el master sucursal y desea fusionar en la rama remota other-branch . Cuando haces esto:

$ git pull origin other-branch

Git es básicamente haciendo esto:

$ git fetch origin other-branch && git merge other-branch

Es decir, un pull es solo una fetch seguida por una merge . Sin embargo, al pull , Git solo fusionará other-branch si puede realizar una combinación de avance rápido . Una combinación de avance rápido es una combinación en la que el jefe de la rama en la que intenta fusionarse es un descendiente directo de la cabeza de la rama que desea combinar. Por ejemplo, si tiene este árbol de historial, la combinación de other-branch resultaría en una combinación de avance rápido:

O-O-O-O-O-O ^ ^ master other-branch

Sin embargo, esto no sería una combinación de avance rápido:

v master O-O-O / /-O-O-O-O ^ other-branch

Para resolver su problema, primero busque la rama remota:

$ git fetch origin other-branch

Luego combínelo en su rama actual (asumiré que es master ) y arregle cualquier conflicto de combinación:

$ git merge origin/other-branch # Fix merge conflicts, if they occur # Add merge conflict fixes $ git commit # And commit the merge!

Tengo un proyecto con múltiples sucursales. Los he estado empujando a GitHub , y ahora que alguien más está trabajando en el proyecto, necesito sacar sus sucursales de GitHub. Funciona bien en maestro. Pero digamos que alguien creó una rama xyz . ¿Cómo puedo extraer la rama xyz de GitHub y fusionarla con la rama xyz en mi localhost ?

Realmente tengo mi respuesta aquí: Empujar y jalar ramas en Git

Pero me sale un error "! [Rechazado]" y algo acerca de "no avance rápido".

¿Alguna sugerencia?


Esto me ayudó a obtener una sucursal remota antes de fusionarla con otra:

git fetch repo xyz:xyz git checkout xyz


La mejor manera es:

git checkout -b <new_branch> <remote repo name>/<new_branch>


No estoy seguro de entender el problema por completo, pero la extracción de una rama existente se hace de esta manera (al menos funciona para mí :)

git pull origin BRANCH

Esto se supone que su sucursal local se crea a partir del origen / BRANCH.


Podría jalar una rama a otra con los siguientes comandos.

git pull {repo} {remotebranchname}:{localbranchname} git pull origin xyz:xyz

Cuando se encuentre en la rama maestra, también puede comprobar primero una rama como:

git checkout -b xyz

Esto crea una nueva rama, "xyz", desde el maestro y la verifica directamente.

Entonces tu haces

git pull origin xyz

Esto arrastra la nueva rama a su rama xyz local.


Simplemente haga un seguimiento explícito de sus sucursales remotas y un simple git pull hará lo que quiera:

git branch -f remote_branch_name origin/remote_branch_name git checkout remote_branch_name

O incluso más de acuerdo con la documentación de GitHub sobre el forking :

git branch -f new_local_branch_name upstream/remote_branch_name


usted también puede hacer

git pull -r origin master

arreglar conflictos de fusión si los hay

git rebase --continue

-r es para rebase. Esto hará que la estructura de la rama de

v master o-o-o-o-o /o-o-o ^ other branch

a

v master o-o-o-o-o-o-o-o ^ other branch

Esto conducirá a una historia más limpia. Nota: en caso de que ya hayas empujado tu otra rama al origen (o cualquier otro control remoto), es posible que tengas que forzar el empuje de tu rama después de la rebase.

git push -f origin other-branch


yo si

git branch -f new_local_branch_name origin/remote_branch_name

En lugar de

git branch -f new_local_branch_name upstream/remote_branch_name

Según lo sugerido por @innaM. Cuando utilicé la versión anterior, decía ''fatal: no es un nombre de objeto válido:'' upstream / remote_branch_name ''''. No hice git fetch origin como se sugiere en un comentario, sino que simplemente lo reemplacé upstream por origin . Supongo que son equivalentes.


git fetch tomará la última lista de sucursales.

Ahora puedes git checkout MyNewBranch

Hecho :)

Para más información ver docs: git fetch


git pull <gitreponame> <branchname>

Por lo general, si solo tiene un repositorio asignado a su código, el gitreponame sería el origen.

Si está trabajando en dos repositorios, uno es local y otro remoto, como puede consultar la lista de repositorios de git remote -v . esto muestra cuántos repo están asignados a su código actual.

BranchName debería existir en el gitreponame correspondiente.

Puedes usar los siguientes dos comandos para agregar o eliminar repo

git remote add <gitreponame> <repourl> git remote remove <gitreponame>