ver subir remoto remote remotas ramas rama cambiar git

subir - ¿Cómo comparar una rama git local con su rama remota?



subir rama local a remoto (16)

Preparar

git config alias.udiff ''diff @{u}''

Difundiendo HEAD con HEAD @ {upstream}

git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this git udiff

Difiriendo con una rama remota arbitraria

Esto responde a la pregunta en su encabezado ("su control remoto"); Si desea diferenciar contra "un control remoto" (que no está configurado como upstream para la rama), debe apuntarlo directamente. Puedes ver todas las ramas remotas con lo siguiente:

git branch -r

Puedes ver todos los controles remotos configurados con lo siguiente:

git remote show

Puede ver la configuración de sucursal / seguimiento para un solo control remoto (por ejemplo, origen) de la siguiente manera:

git remote show origin

Una vez que determine la rama de origen apropiada, simplemente haga una diferencia normal :)

git diff [MY_LOCAL] MY_REMOTE_BRANCH

¿Cómo puedo ver la diff entre una sucursal local y una remota?


Aquí está una respuesta abreviada si está comparando su rama actual y con algo que desea git pull .

git fetch git diff FETCH_HEAD

El primer comando determinará qué rama remota corresponde a su rama actual. Un artefacto de ese cálculo en la referencia FETCH_HEAD . Luego, el segundo comando usa esa comparación de referencia en comparación con lo que tiene tu rama actual.


Así es como lo hago.

#To update your local. git fetch --all

esto capturará todo desde el control remoto, de modo que cuando verifique la diferencia, comparará la diferencia con la rama remota.

#to list all branches git branch -a

El comando anterior mostrará todas las ramas.

#to go to the branch you want to check difference git checkout <branch_name> #to check on which branch you are in, use git branch (or) git status

Ahora, puede comprobar la diferencia de la siguiente manera.

git diff origin/<branch_name>

Esto comparará su sucursal local con la sucursal remota.


Deje que su rama de trabajo sea desarrollo y desee diferenciar entre rama de desarrollo local y rama de desarrollo remoto, en ese caso, la sintaxis debería ser como los git diff remotes/origin/development..development
o

git fetch origin git diff origin/development


Ejemplo

git diff ''master'' ''testlocalBranch''

Si está utilizando un editor como webstorm, puede hacer clic con el botón derecho en seleccionar archivo comparando con rama y escribir / seleccionar su rama.


Entiendo mucho mejor la salida de:

git diff <remote-tracking branch> <local branch>

eso me muestra lo que se va a eliminar y lo que se agregará si presiono la sucursal local. Por supuesto, es lo mismo, solo lo inverso, pero para mí es más legible y me siento más cómodo al ver lo que va a suceder.


La manera fácil:

git fetch git log -p HEAD..FETCH_HEAD

Esto primero recogerá los cambios de su control remoto predeterminado (origen). Esto se creará automáticamente cuando clones un repositorio. También puedes ser explícito: git fetch origin master .

Luego, git log se usa para comparar tu rama actual con la que acabas de obtener. (La opción -p (generar parche) es la que muestra las diferencias ).


Me pregunto si hay algún cambio en mi rama maestra ...

  1. En primer lugar, necesita cambiar su sucursal (si ya está bajo esta sucursal, ¡no necesita hacer esto!)

git checkout master

  1. Puede ver qué archivo ha sido modificado bajo su rama maestra por este comando

estado de git

  1. Listar las ramas

rama git -a

  • dominar
    mandos a distancia / origen / maestro
  1. Encuentra las diferencias

git diff origin / master


Para actualizar las sucursales de seguimiento remoto, primero debe escribir git fetch y luego:

git diff <masterbranch_path> <remotebranch_path>

Puede git branch -a para enumerar todas las sucursales (local y remota) y luego elegir el nombre de la rama de la lista (solo quite los remotes/ del nombre de la rama remota).

Ejemplo: git diff master origin/master (donde "master" es la rama maestra local y "origin / master" es una rama remota y maestra, a saber, el origen).


Primer tipo

git branch -a

para obtener la lista de sucursales disponibles. En la salida puede ver algo como

* master remotes/main/master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/mt remotes/upstream/master remotes/upstream/mt

Entonces muestra el diff

git diff --stat --color remotes/main/master..origin/master git diff remotes/main/master..origin/master


Sé que ya hay varias respuestas a esta pregunta pero recibí un error extraño al intentar la mayoría de ellas.

En mi caso, tengo un segundo control remoto llamado heroku que no es el origin y como no estaba sincronizado, recibí este error al intentar ejecutar el git diff master heroku/master :

fatal: ambiguous argument ''heroku/master'': unknown revision or path not in the working tree.

o esto al intentar el otro enfoque git diff master..heroku/master :

fatal: bad revision ''master..heroku/master''

La solución fue mencionar explícitamente el nombre remoto en git fetch antes de ejecutar git diff , en mi caso:

$ git fetch heroku $ git diff master heroku/master

Espero que ayude a otros con este mismo problema.


Si desea ver la diferencia, ya que solo se cambiaron los nombres de los archivos, utilice:
git diff --name-status <remote-branch> <local-branch> ,
de lo contrario esto mostraría todas las diferencias entre las dos ramas:
git diff <remote-branch> <local-branch>


Si está en una sucursal determinada y desea compararla con una sucursal ascendente que está rastreando, use

git diff @{upstream}

Cortesía de esta respuesta , la documentación de git para especificar revisiones tiene:

<branchname>@{upstream} , por ejemplo, master@{upstream} , @{u}
El sufijo @{upstream} a un nombre de rama (forma corta <branchname>@{u} ) se refiere a la rama que la rama especificada por branchname de branchname está configurada para construir sobre (configurada con branch.<name>.remote y branch.<name>.merge ). Un nombre de branchname faltante branchname defecto es el actual.


tl; dr : git diff <local branch> <remote branch>

Cuando uso git en la cáscara, primero me gusta orientarme mirando alrededor. Aquí hay un comando para mostrar todas las ramas

$ git branch -a # (or git branch --all) * my-branch master remotes/origin/some-branch remotes/origin/HEAD -> origin/master remotes/origin/my-branch remotes/origin/some-other-branch remotes/origin/master

Aquí tengo dos sucursales locales ( my-branch y master ) y 4 remotas ( some-branch , some-other-branch , master y my-branch ).

Además, el asterisco junto a my-branch señala el hecho de que actualmente estoy en esa rama (también sabría que al usar el comando git status que generaría: On branch my-branch. ).

Nota: las ramas remotas en el shell git bash se muestran en rojo, mientras que las locales se muestran en verde.

Si solo quieres mostrar ramas remotas :

$ git branch -r # (or git branch --remotes) origin/some-branch origin/HEAD -> origin/master origin/my-branch origin/some-other-branch origin/master

Para mostrar solo las sucursales locales, puede tener la tentación de usar git branch -l pero ese es un comando completamente diferente. Para mostrar las sucursales locales use git branch sin opciones

$ git branch * my-branch master

Para completar una revisión de las opciones de bifurcación básicas, está la lista - que, contrariamente a lo que podría esperar, está ahí para permitir el filtrado . Úsalo con un patrón como este:

$ git branch --list ''my*'' * my-branch

También puede combinar --list con las opciones -a -r pero asegúrese de adaptar su patrón en consecuencia ( recuerde: las ramas remotas comienzan con "remotos" ). Ejemplo:

# this will show all branches (local & remote) that start with my $ git branch --list ''my*'' -a * my-branch # better: the pattern includes the remote $ git branch --list ''*my*'' -a * my-branch remotes/origin/my-branch

Docs: https://git-scm.com/docs/git-branch

Ahora puede comparar dos sucursales de todas las disponibles (también puede comparar dos locales o dos controles remotos).

Aquí estoy comparando el local con el remoto my-branch , están sincronizados, así que no obtengo ningún resultado:

$ git diff my-branch remotes/origin/my-branch

Nota: debe dar los nombres completos de las ramas sin comillas.

También puedo comparar el my-branch local con el master remoto. Aquí obtengo algunos resultados porque el remoto my-branch no se ha fusionado en la rama maestra.

$ git diff my-branch remotes/origin/master diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js index fd79b98..df3d798 100644 --- a/src/controllers/call.controller.js +++ b/src/controllers/call.controller.js @@ -261,7 +261,7 @@ function callController() { /* * Function: doCall [ . . . ]


git diff <local branch> <remote>/<remote branch>

Por ejemplo, git diff master origin/master , o git diff featureA origin/next

Por supuesto, para tener dicha rama de seguimiento remoto es necesario git fetch primero git fetch ; y lo necesita para tener información actualizada sobre las sucursales en el repositorio remoto.


git difftool <commit> .

Esto comparará la confirmación que desea con sus archivos locales. No olvides el punto al final (para local).

Por ejemplo, para comparar tus archivos locales con algún commit:

git diftool 1db1ef2490733c1877ad0fb5e8536d2935566341.

(y no necesita git fetch, a menos que sea necesario comparar con nuevos confirmaciones)