Empuje a la derivación remota falla

Tengo un repo de git en una caja de Linux remota y otro repository en una máquina de Windows.

Me gustaría:

  • pagar una sucursal de la máquina linux
  • trabajar en ello localmente (desde mi máquina de Windows)
  • cometer localmente
  • luego empuje hacia la twig remota.

Eso es lo que hago:

En Linux (remoto)

#currently on master branch git checkout -b remote_trunk #currently on remote_trunk branch 

En Windows (localmente)

  git fetch origin git checkout remote_trunk #currently on remote_trunk branch # then I modify some files git commit -a -m"I modified some files" git push origin remote_trunk 

Resultado

 Counting objects: 9, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done. Total 5 (delta 4), reused 0 (delta 0) remote: error: refusing to update checked out branch: refs/heads/remote_trunk remote: error: By default, updating the current branch in a non-bare repository remote: error: is denied, because it will make the index and work tree inconsistent remote: error: with what you pushed, and will require 'git reset --hard' to match remote: error: the work tree to HEAD. remote: error: remote: error: You can set 'receive.denyCurrentBranch' configuration variable to remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into remote: error: its current branch; however, this is not recommended unless you remote: error: arranged to update its work tree to match what you pushed in some remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, set remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. To Z:/shadow.git/ets/src/trunk/src ! [remote rejected] remote_trunk -> remote_trunk (branch is currently checked out) error: failed to push some refs to 'Z:/shadow.git/ets/src/trunk/src' 

De manera pnetworkingeterminada, Git no permitirá un envío a un repository no vacío.

Cuando presiona hacia el server remoto, está actualizando sus references de bifurcación, lo que puede generar cierta confusión si tiene cambios en el directory de trabajo del repository remoto. Puedes evitar esa confusión al:

  • Su mejor opción es configurar un repository desnudo separado y enviar desde ambas áreas de desarrollo al repository compartido. compruebe git help init y la opción --bare .
  • solo ejecute git fetch / pulls entre los dos repositorys (y no git push)
  • puede establecer la variable 'receive.denyCurrentBranch' como lo sugiere la advertencia. Esto permitirá el empuje pero no es la opción recomendada a less que sepa lo que está haciendo y tenga cuidado.
  • Suena por la advertencia de que permitirá el empuje siempre que el repository remoto de Linux no tenga actualmente remote_trunk . Entonces, en el repository remoto, puede verificar una sucursal diferente (por ejemplo, en su caso, el git checkout master ) o pagar un estado separado ( git checkout --detached ) mientras hace git push del repository local, y luego de empujar Puedes git checkout remote_trunk en el repository remoto sin que esto afecte silenciosamente tu índice.

La historia corta: evite los empujones a repositorys no desnudos, prefiera git pull para incorporar cambios en ellos. Si quieres hacer push en un área común, configura un repository vacío con git init --bare

Parece que su repository remoto no es un repository simple, y debe serlo. Cuando lo creas, usa:

 git init --bare