Pouvez-vous expliquer ce qui ne va pas avec ce flux de travail?
$ git init --bare bare
Initialized empty Git repository in /work/fun/git_experiments/bare/
$ git clone bare alice
Cloning into alice...
done.
warning: You appear to have cloned an empty repository.
$ cd alice/
$ touch a
$ git add a
$ git commit -m "Added a"
[master (root-commit) 70d52d4] Added a
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '/work/fun/git_experiments/bare'
Ne git push
pousse pas toujours vers le référentiel à partir duquel j'ai cloné?
Réponses:
Oui, le problème est qu'il n'y a pas de commits en "nu". C'est un problème avec le premier commit uniquement, si vous créez les dépôts dans l'ordre (bare, alice). Essayez de faire:
Cela ne serait nécessaire que la première fois. Ensuite, cela devrait fonctionner normalement.
Comme l'a souligné Chris Johnsen, vous n'auriez pas ce problème si votre push.default était personnalisé. J'aime en amont / tracking.
la source
sudo apt-get upgrade git-core
etsudo apt-get upgrade git
il pense qu'aucune mise à jour n'est nécessaire.git --version
renvoie 1.7.3.1. Une idée de ce qui manque? J'avoue qu'actuellementapt-get update
ça ne marche pas pour moi, mais ça ne fait pas si longtemps.matching
; vous avez peut-êtrepush.default
réglé surupstream
/tracking
(oucurrent
) dans votre~/.gitconfig
?git push origin master:master
de le rendre explicite. Si cela ne fonctionne pas, vérifiez pour voir sur quelle branche vous vous trouvez:git branch
peut - être que vous n'avez pas fait le premier commit ou que vous avez fait ce commit sur une branche autre que master.Si vous:
il poussera au repo nu.
Il semble que votre dépôt alice ne suit pas correctement.
Cela montrera la télécommande et la branche par défaut.
Si vous
Vous devriez commencer à suivre cette télécommande et cette branche. Je ne sais pas si cette option a toujours été dans git.
la source
La réponse à cette question connexe a fourni la solution pour moi ... c'était juste une erreur stupide:
N'oubliez pas de vous engager en premier!
https://stackoverflow.com/a/7572252
Si vous ne vous êtes pas encore engagé dans votre dépôt local, il n'y a rien à pousser, mais le message d'erreur Git que vous obtenez ne vous aide pas trop.
la source
est la manière canonique de tout pousser vers un nouveau dépôt nu.
Une autre façon de faire la même chose est de créer votre nouveau référentiel non nu, puis de faire un clone nu avec
puis utilisez
dans le référentiel d'origine (non dénudé).
la source
git push --all ../test_repo
l'URL du repo à la fin de la commande;)Essayez ceci dans votre
alice
référentiel (avant de pousser):Ou, configurez-le comme valeur par défaut pour votre utilisateur avec
git config --global …
.git push
utilise par défaut leorigin
référentiel (qui est normalement le référentiel à partir duquel vous avez cloné le référentiel actuel), mais il ne choisit pas par défaut de pousser la branche en cours - il choisit par défaut de ne pousser que les branches qui existent à la fois dans le référentiel source et dans le référentiel de destination.La
push.default
variable de configuration (voir git-config (1) ) contrôle ce quigit push
va pousser quand on ne lui donne aucun argument "refspec" (c'est-à-dire quelque chose après un nom de référentiel). La valeur par défaut donne le comportement décrit ci-dessus.Voici les valeurs possibles pour
push.default
:nothing
Cela vous oblige à fournir une «refspec».
matching
(valeur par défaut)Cela pousse toutes les branches qui existent à la fois dans le référentiel source et le référentiel de destination.
Ceci est complètement indépendant de la branche actuellement extraite.
upstream
outracking
(Les deux valeurs signifient la même chose. La dernière a été dépréciée pour éviter toute confusion avec les branches de "suivi à distance". La première a été introduite dans 1.7.4.2, donc vous devrez utiliser la seconde si vous utilisez Git 1.7.3.1. )
Ceux-ci poussent la branche courante vers la branche spécifiée par sa configuration «amont».
current
Cela pousse la branche actuelle vers la branche du même nom dans le référentiel de destination.
Ces deux derniers finissent par être les mêmes pour les cas courants (par exemple travailler sur un maître local qui utilise origine / maître comme son amont), mais ils sont différents lorsque la branche locale a un nom différent de sa branche «en amont»:
Avec
push.default
égal àupstream
(outracking
), la poussée iraitorigin
de » maître de la branche. Lorsqu'il est égal àcurrent
, le push irait àorigin
la branche quickfix de .Le
matching
paramètre mettra à jourbare
le maître de votre scénario une fois qu'il aura été établi. Pour l'établir, vous pouvez utilisergit push origin master
une fois.Cependant, le
upstream
paramètre (ou peut-êtrecurrent
) semble être mieux adapté à ce que vous attendez, vous pouvez donc l'essayer:(Encore une fois, si vous utilisez toujours un Git avant 1.7.4.2, vous devrez utiliser à la
tracking
place deupstream
).la source
J'utilise le client git SourceTree et je vois que leur commande initiale commit / push est:
la source