git push échoue: `refuser de mettre à jour la twig extraite: refs / heads / master`

Je veux stocker mes modifications locales à la config JBoss dans git. Pour cela, j’ai mis en place la structure suivante:

lrwxrwxrwx 1 jboss jboss 19 Jan 24 11:53 current -> jboss-as-7.1.0.CR1b drwxr-xr-x 11 jboss jboss 4096 Jan 24 12:13 jboss-as-7.1.0.CR1b -rw-r--r-- 1 jboss jboss 108211143 Jan 23 16:02 jboss-as-7.1.0.CR1b.tar.gz drwxr-xr-x 6 jboss jboss 4096 Jan 24 11:36 local 

local est le repository git qui doit être “l’origine”. L’idée est que je veux pouvoir facilement mettre à jour ma dissortingbution JBoss une fois qu’une mise à jour est disponible. Je souhaite stocker toutes les modifications locales du paquet JBoss dissortingbué dans git.

Donc, je le fais actuellement:

 jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git init Initialized empty Git repository in /opt/jboss/jboss-as-7.1.0.CR1b/.git/ jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git remote add origin ../local/ jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git pull origin master From ../local * branch master -> FETCH_HEAD 

Jusqu’ici tout va bien, toutes mes modifications locales sont là où je les veux.

Cependant, une fois que j’ai des modifications locales et que je souhaite les récupérer dans le référentiel local , je reçois une erreur:

 jboss@tpl0:~/jboss-as-7.1.0.CR1b$ vim standalone/configuration/standalone.xml jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git commit -a -m "renamed database to project2_core, to distinguish from other projects" [master 3e54f34] renamed database to project2_core, to distinguish from other projects Committer: jboss  1 files changed, 1 insertions(+), 1 deletions(-) jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git push origin master Counting objects: 9, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 447 bytes, done. Total 5 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (5/5), done. remote: error: refusing to update checked out branch: refs/heads/master 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 t remote: error: 'ignore' or 'warn' in the remote repository to allow pushing int 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 som remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, se remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. To ../local/ ! [remote rejected] master -> master (branch is currently checked out) error: failed to push some refs to '../local/' 

Que puis-je faire à ce sujet? Toute aide est grandement appréciée!

MODIFIER

Voici ce que j’ai fait, qui a résolu le problème:

 cd ~/current git init vim .gitignore # set up a basic .gitignore file git add .gitignore git commit -a -m "initial commit" cd ~/local git clone ~/current git branch -m master current # rename master branch to 'current' git branch repo git checkout repo 

Maintenant, la twig en current dans le répertoire ~/local est toujours à jour, mais elle n’est pas utilisée pour que je puisse y accéder.

La twig principale du site distant est extraite. Si vous avez access à un référentiel distant, vérifiez toute autre twig, puis déplacez-la depuis votre référentiel.

Pousser est destiné aux repos nus. Pour les repos non nus, vous devriez vous y engager.

Si vous voulez forcer cela à travers, vous pouvez faire comme le message d’erreur et définir receive.denyCurrentBranch à ignorer. SSH à l’emplacement du repository que vous poussez et exécutez:

 git config receive.denyCurrentBranch ignore 

Créez le repository d’origine (local) en tant que repository nu (par exemple, git init –bare) ou enregistrez une twig qui n’est pas maître.

OU,

lorsque vous initialisez votre projet distant, en utilisant

 git init --bare 

J’ai réussi à contourner cela en tirant de «local» dans «courant» plutôt que de pousser à «courant» de «local».

Je sais que c’est une assez vieille question, mais si vous utilisez git init –bare, faites attention à ‘GIT_DIR =.’ qui sera mis pour un crochet nu repo si vous utilisez des crochets pour vérifier le repo après avoir poussé. Utilisez ‘export GIT_DIR = .git’ dans votre routine hook pour lui faire reconnaître le repo dans lequel vous tirez ….