Git push no está 'empujando' una nueva twig

Revisé una nueva sucursal de nuestro repository. Todo está funcionando bien para nuestra twig de desarrollo. Pero en la nueva twig 'push' no está haciendo nada.

Todo parece normal: hay 2 compromisos para enviar.

-> git branch -vv develop 8ab7ef1 [origin/develop] Merge branch 'develop' of git.example.com:core-platform into develop * hotfix112 8521cef [origin/hotfix/1.1.2: ahead 2] CORE-1263 - Completed merging from dev into hot fix. 

Pero Push no hace nada:

 -> git push Everything up-to-date -> git status # On branch hotfix112 # Your branch is ahead of 'origin/hotfix/1.1.2' by 2 commits. # (use "git push" to publish your local commits) # nothing to commit, working directory clean 

Descubrí que 'git pull' usa control remoto, pero 'git push' no:

 -> git remote show origin * remote origin Fetch URL: git@git.example.com:core-platform.git Push URL: git@git.example.com:core-platform.git HEAD branch: develop Remote branches: core-platform-1.0.0 tracked develop tracked hotfix/1.1.2 tracked master tracked release/1.0.0 tracked release/1.1.1 tracked Local branches configunetworking for 'git pull': develop merges with remote develop hotfix112 merges with remote hotfix/1.1.2 Local ref configunetworking for 'git push': develop pushes to develop (up to date) -> 

No puedo entender por qué el hotfix112 no está vinculado al control remoto, pero el pull es.

¿Cómo arreglo esta configuration?

Git actúa como lo describió porque tiene la siguiente situación:

  • usted tiene una sucursal local (hotfix112) que está rastreando una sucursal remota de nombre diferente
  • tiene la opción push.default establecida en matching (que es la pnetworkingeterminada) o simple

Como suele ser el caso con git, tienes algunas alternativas para configurar git para que actúe como desees:

1.) Lo más fácil sería cambiar el nombre de su sucursal local para que coincida con el nombre de la sucursal remota. Luego, push comienza a funcionar automáticamente. Así que simplemente cambie el nombre de la twig 'hotfix112' a 'hotfix / 1.1.2':

 git branch -m hotfix112 hotfix/1.1.2 

2.) Puede cambiar el comportamiento de inserción a través de la opción de configuration push.default a 'tracking'. Como ya tiene la twig 'hotfix112' configurada para rastrear origen / revisión / 1.1.2, git push funcionará como lo desee. Para configurar la opción de git local, ejecuta:

 git config --local push.default tracking 

3.) Puede editar manualmente su file .git / config y establecer push para hacer coincidir el local refspec 'hotfix112' con el remoto 'hotfix / 1.1.2'. Debe agregar la línea de inserción debajo de su [origen de "origen remoto"]:

 [remote "origin"] url = ... fetch = ... push = hotfix112:hotfix/1.1.2 

Los enfoques primero y tercero solo funcionan en la twig hotfix112. El segundo funciona para todas las twigs de seguimiento en ese repository (o globalmente si se utilizó la opción global).

Pruebe git push origin / hotfix / 1.1.2 (la sucursal remota) hotfix112 (la sucursal local), posiblemente después de presionar el control remoto, cree un enlace. Aunque es raro, eso no sucedió cuando se ramificó.

El comportamiento actual de git push (sin ningún parámetro adicional) es impulsar todas las twigs con el mismo nombre en el repository local y remoto. Dado que el nombre de su sucursal local difiere de su nombre de sucursal remota, si los cambia para que coincida, git push debe impulsar sus cambios. Sin embargo, tenga en count que este comportamiento cambiará en una versión futura de git (probablemente 2.0). Ver: http://article.gmane.org/gmane.comp.version-control.git/193308 . Si desea cambiar el comportamiento de git push ahora, escriba git help config y busque "push.default".