repositorio remote origin example eliminar ejemplo git git-push git-remote

remote - ¿Cómo puedo encontrar la ubicación de origen/maestro en git y cómo puedo cambiarlo?



git push origin master (13)

Soy un novato de Git. Recientemente moví un proyecto de Rails de Subversion a Git. Seguí el tutorial aquí: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

También estoy usando unfuddle.com para almacenar mi código. Realizo cambios en mi computadora portátil Mac en el tren a / desde el trabajo y luego los empujo a desajustar cuando tengo una conexión de red con el siguiente comando:

git push unfuddle master

Utilizo Capistrano para implementaciones y obtengo el código del repositorio de unfuddle usando la rama maestra.

Últimamente he notado el siguiente mensaje cuando ejecuto "git status" en mi computadora portátil:

# On branch master # Your branch is ahead of ''origin/master'' by 11 commits. # nothing to commit (working directory clean)

Y estoy confundido en cuanto a por qué. Pensé que mi computadora portátil era el origen ... pero no sé si lo que está causando que aparezca el mensaje es el hecho de que originalmente saqué de Subversion o presioné a Unfuddle. Cómo puedo:

  1. Averigua dónde Git piensa que ''origen / maestro'' es?
  2. Si está en otro lugar, ¿cómo convierto mi computadora portátil en el ''origen / maestro''?
  3. Consigue que este mensaje se vaya. Me hace pensar que Git no está contento con algo.

Mi mac está ejecutando Git versión 1.6.0.1.

Cuando ejecuto git remote show origin como sugiere dbr, obtengo lo siguiente:

~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin fatal: ''/Users/brian/Projects/GeekFor/gf/.git'': unable to chdir or not a git archive fatal: The remote end hung up unexpectedly

Cuando ejecuto git remote -v como lo sugiere Aristóteles Pagaltzis, obtengo lo siguiente:

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v origin /Users/brian/Projects/GeekFor/gf/.git unfuddle [email protected]:spilth/geekfor.git

Ahora, curiosamente, estoy trabajando en mi proyecto en el directorio geekfor pero dice que mi origen es mi máquina local en el directorio gf . Creo que gf fue el directorio temporal que usé al convertir mi proyecto de Subversion a Git y, probablemente, desde donde empecé a deshacerme de él. Entonces creo que revisé una copia nueva de unfuddle al directorio geekfor .

Así que parece que debería seguir el consejo de dbr y hacer:

git remote rm origin git remote add origin [email protected]:spilth/geekfor.git


Pensé que mi portátil era el origen ...

Eso es algo sin sentido: el origin refiere al repositorio remoto predeterminado, el que usualmente obtiene / extrae de los cambios de otras personas.

Cómo puedo:

  1. git remote -v te mostrará qué origin es; origin/master es su "marcador" para el último estado conocido de la rama master del repositorio de origin , y su propio master es una rama de seguimiento para origin/master . Esto es todo lo que debería ser .

  2. Usted no Al menos no tiene sentido que un repositorio sea el repositorio remoto predeterminado para sí mismo.

  3. No lo es Simplemente le indica que ha realizado tantos y tantos confirmaciones locales que no están en el repositorio remoto (de acuerdo con el último estado conocido de ese repositorio).


1. Averigüe dónde Git piensa que ''origin / master'' está usando git-remote

git remote show origin

..que devolverá algo como ..

* remote origin URL: [email protected]:~/something.git Remote branch merged with ''git pull'' while on branch master master Tracked remote branch master

Un remoto es básicamente un enlace a un repositorio remoto. Cuando tu lo hagas..

git remote add unfuddle [email protected]/myrepo.git git push unfuddle

..git empujará los cambios a esa dirección que agregaste. Es como un marcador, para repositorios remotos.

Cuando ejecuta el git status , comprueba si faltan confirmaciones en el control remoto (en comparación con su repositorio local), y si es así, por cuántas confirmaciones. Si presionas todos tus cambios a "origen", ambos estarán sincronizados, por lo que no recibirás ese mensaje.

2. Si está en otro lugar, ¿cómo convierto mi computadora portátil en el ''origen / maestro''?

No tiene sentido hacer esto. Digamos que "origen" se renombra a "computadora portátil" - nunca querrás hacer una git push laptop desde tu computadora portátil.

Si quieres eliminar el control remoto de origen, lo haces ..

git remote rm origin

Esto no eliminará nada (en términos de contenido de archivo / revisiones-historial). Esto detendrá el mensaje "su sucursal está adelantada por ...", ya que ya no comparará su repositorio con el control remoto (¡porque se ha ido!)

Una cosa para recordar es que no hay nada especial sobre el origin , es solo un nombre predeterminado que usa git.

Git usa origin por defecto cuando haces cosas como git push o git pull . Por lo tanto, si tiene un control remoto que usa mucho (Unfuddle, en su caso), le recomendaría agregar unfuddle como "origen":

git remote rm origin git remote add origin [email protected]:subdomain/abbreviation.git

o haga lo anterior en un comando usando set-url:

git remote set-url origin [email protected]:subdomain/abbreviation.git

Entonces puede simplemente hacer git push o git pull para actualizar, en lugar de git push unfuddle master


Es posible restablecer un compromiso específico antes de que se realicen sus propios compromisos.

$ git status # On branch master # Your branch is ahead of ''origin/master'' by 2 commits. # nothing to commit (working directory clean)

Use git log para encontrar qué compromiso fue el que tenía antes de que ocurrieran los cambios locales.

$ git log commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb ... commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e ...

Tome nota de las confirmaciones locales y reinicie directamente a la confirmación anterior:

git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e


Estoy luchando con este problema y ninguna de las respuestas anteriores aborda la pregunta como la veo. He reducido el problema a sus aspectos básicos para ver si puedo aclarar mi problema.

Creo un nuevo repositorio (rep1), pongo un archivo en él y lo confirmo.

mkdir rep1 cd rep1 git init echo "Line1" > README git add README git commit -m "Commit 1"

Creo un clon de rep1 y lo llamo rep2. Miro dentro de rep2 y veo que el archivo es correcto.

cd ~ git clone ~/rep1 rep2 cat ~/rep2/README

En rep1 hago un solo cambio en el archivo y lo confirmo. Luego, en rep1, creo un control remoto para apuntar a rep2 y presiono los cambios.

cd ~/rep1 <change file and commit> git remote add rep2 ~/rep2 git push rep2 master

Ahora, cuando entro en rep2 y hago un ''estado de git'', me dicen que estoy por delante del origen.

# On branch master # Your branch is ahead of ''origin/master'' by 1 commit. # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README #

README en rep2 es como era originalmente, antes de la segunda confirmación. Las únicas modificaciones que he hecho son para rep1 y todo lo que quería hacer era empujarlas a rep2. ¿Qué es lo que no estoy agarrando?


Hace poco tuve este problema y pensé que era porque había eliminado algunos archivos que ya no necesitaba. El problema es que git no sabe que los archivos se han eliminado y ve que el servidor todavía lo tiene. (servidor = origen)

Entonces corri

git rm $(git ls-files --deleted)

Y luego corrió un commit y push.

Eso solucionó el problema.


Llegué a esta pregunta en busca de una explicación sobre lo que significa el mensaje "su sucursal está adelantada por ...", en el esquema general de git. No hubo respuesta a eso aquí, pero como esta pregunta actualmente aparece en la parte superior de Google cuando busca la frase "Su sucursal está delante de ''origen / maestro''", y desde entonces he descubierto lo que realmente significa el mensaje , Pensé en publicar la información aquí.

Entonces, siendo un git newbie, puedo ver que la respuesta que necesitaba era una respuesta claramente newbie. Específicamente, lo que significa la frase "su sucursal está por delante con ..." es que hay archivos que ha agregado y comprometido en su repositorio local, pero que nunca ha enviado al origen. La intención de este mensaje se confunde aún más por el hecho de que "git diff", al menos para mí, no mostró diferencias. No fue hasta que ejecuté "git diff origin / master" que me dijeron que había diferencias entre mi repositorio local y el maestro remoto.

Entonces, para ser claros:

"su rama está adelante por ..." => Debe empujar hacia el maestro remoto. Ejecute "git diff origin / master" para ver cuáles son las diferencias entre su repositorio local y el repositorio maestro remoto.

Espero que esto ayude a otros novatos.

(Además, reconozco que hay sutilezas de configuración que pueden invalidar parcialmente esta solución, como el hecho de que el maestro puede no ser realmente "remoto" y que "origen" es un nombre reconfigurable utilizado por la convención, etc. Pero los novatos sí lo hacen. No nos importa ese tipo de cosas. Queremos respuestas simples y directas. Podemos leer sobre las sutilezas más adelante, una vez que hayamos resuelto el problema acuciante.)

Conde


Me preguntaba lo mismo acerca de mi repo. En mi caso, tenía un control remoto antiguo al que ya no estaba presionando, así que tuve que retirarlo.

Obtener la lista de mandos a distancia:

git remote

Elimina el que no necesites.

git remote rm {insert remote to remove}


Te está esperando "empujar". Tratar:

$ git push


Tuve el problema "Tu sucursal está delante de ''origin / master'' por nn commit". cuando empujé a un repositorio remoto con:

git push ssh://[email protected]/yyy/zzz.git

Cuando encontré que mi dirección remota estaba en el archivo .git / FETCH_HEAD y usé:

git push

El problema desapareció.


Tuve un problema similar a este en el que mi directorio de trabajo estaba ahead of origin by X commits pero el git pull como resultado Everything up-to-date . Logré arreglarlo siguiendo este consejo . Estoy publicando esto aquí en caso de que ayude a alguien más con un problema similar.

La solución básica es la siguiente:

$ git push {remote} {localbranch}:{remotebranch}

Donde las palabras entre corchetes deben reemplazarse por su nombre remoto, el nombre de su sucursal local y el nombre de su sucursal remota. p.ej

$ git push origin master:master


Yo también soy un git novato. Tuve el mismo problema con ''Tu sucursal está delante del origen / maestro por N mensajes'' confirmados. Hacer el ''git diff origin / master'' sugerido mostró algunas diferencias que no me interesaba mantener. Asi que ...

Como mi clon de git era para hosting, y quería una copia exacta del repositorio maestro, y no me importaba mantener ningún cambio local, decidí guardar todo mi repositorio y crear uno nuevo:

(en la máquina de alojamiento)

mv myrepo myrepo git clone USER@MASTER_HOST:/REPO_DIR myrepo

Por conveniencia, solía hacer cambios en el clon en mi máquina de alojamiento. No más. Haré esos cambios en el maestro, git commit allí y haré un git pull. Con suerte, esto debería mantener mi clon de git en la máquina de alojamiento en completa sincronización.

/ Nara


a veces hay una diferencia entre la versión local en caché del maestro de origen (origen / maestro) y el verdadero maestro de origen.

Si ejecuta git remote update esto volverá a sincronizar el maestro de origen con el origen / maestro

Vea la respuesta aceptada a esta pregunta.

Diferencias entre git pull origin master y git pull origin / master


[Solución]

$ git push origin

Esto me lo resolvió. Lo que hizo, sincronizó mi maestro (en la computadora portátil) con el "origen" que está en el servidor remoto.