Git
En poussant
Recherche…
Introduction
Après avoir modifié, transféré et validé du code avec Git, il est nécessaire de lancer des modifications pour mettre vos modifications à la disposition des autres et transférer vos modifications locales sur le serveur de référentiel. Cette rubrique couvrira comment propulser correctement le code en utilisant Git.
Syntaxe
- git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]
Paramètres
Paramètre | Détails |
---|---|
--Obliger | Écrase la télécommande pour correspondre à votre référence locale. Le dépôt distant peut perdre ses commits, donc utilisez-le avec précaution . |
--verbeux | Courez verbeusement. |
<à distance> | Le référentiel distant qui est la destination de l'opération Push. |
<refspec> ... | Spécifiez la référence distante à mettre à jour avec quel ref ou objet local. |
Remarques
Amont Aval
En termes de contrôle de source, vous êtes "en aval" lorsque vous copiez (clone, extraction, etc.) à partir d'un référentiel. Les informations vous ont été transmises "en aval".
Lorsque vous apportez des modifications, vous souhaitez généralement les renvoyer "en amont" afin de les intégrer dans ce référentiel afin que tous ceux qui utilisent la même source travaillent avec les mêmes modifications. Il s’agit principalement d’une question sociale de savoir comment chacun peut coordonner son travail plutôt qu’une exigence technique de contrôle des sources. Vous souhaitez intégrer vos modifications au projet principal afin de ne pas suivre les lignes de développement divergentes.
Parfois, vous lisez sur les gestionnaires de paquets ou de versions (les personnes et non sur l'outil) qui parlent de soumettre des modifications à "en amont". Cela signifie généralement qu'ils devaient ajuster les sources d'origine afin de pouvoir créer un package pour leur système. Ils ne veulent pas continuer à faire ces changements, donc s'ils les envoient "en amont" à la source d'origine, ils ne devraient pas avoir à traiter le même problème dans la prochaine version.
( Source )
Pousser
git push
va pousser votre code à votre amont existant. Selon la configuration de push, il faudra soit pousser le code de votre branche actuelle (par défaut dans Git 2.x) soit de toutes les branches (par défaut dans Git 1.x).
Spécifiez le référentiel distant
Lorsque vous travaillez avec git, il peut être utile d'avoir plusieurs référentiels distants. Pour spécifier un référentiel distant vers lequel pousser, ajoutez simplement son nom à la commande.
git push origin
Spécifier la branche
Pour pousser vers une branche spécifique, dites feature_x
:
git push origin feature_x
Définir la branche de suivi à distance
À moins que la branche sur laquelle vous travaillez ne provienne d'un dépôt distant, l'utilisation de git push
ne fonctionnera pas du premier coup. Vous devez exécuter la commande suivante pour indiquer à git de pousser la branche en cours vers une combinaison distante / branche spécifique
git push --set-upstream origin master
Ici, master
est le nom de la branche sur l' origin
distante. Vous pouvez utiliser -u
comme raccourci pour --set-upstream
.
Pousser vers un nouveau référentiel
Pour pousser vers un référentiel que vous n'avez pas encore créé ou est vide:
- Créez le référentiel sur GitHub (le cas échéant)
- Copiez l'URL qui vous a été donnée sous la forme
https://github.com/USERNAME/REPO_NAME.git
- Accédez à votre référentiel local et exécutez
git remote add origin URL
- Pour le vérifier, lancez
git remote -v
- Pour le vérifier, lancez
- Exécuter
git push origin master
Votre code devrait maintenant être sur GitHub
Pour plus d'informations, voir Ajout d'un référentiel distant
Explication
Le code push signifie que git analysera les différences entre vos commits locaux et distants et les enverra pour être écrits en amont. Lorsque Push réussit, votre référentiel local et votre référentiel distant sont synchronisés et les autres utilisateurs peuvent voir vos commits.
Pour plus de détails sur les concepts de "amont" et "aval", voir Remarques .
Force de poussée
Parfois, lorsque vous avez des modifications locales incompatibles avec les modifications à distance (par exemple, lorsque vous ne pouvez pas avancer rapidement la branche distante ou que la branche distante n'est pas un ancêtre direct de votre branche locale), la seule solution pour pousser vos modifications .
git push -f
ou
git push --force
Notes IMPORTANTES
Cela écrasera tout changement à distance et votre télécommande correspondra à votre local.
Avertissement: L'utilisation de cette commande peut entraîner une perte de validation pour le référentiel distant. De plus, il est fortement déconseillé de forcer si vous partagez ce référentiel distant avec d'autres utilisateurs, car leur historique conservera tous les validations écrasées, rendant ainsi leur travail non synchronisé avec le référentiel distant.
En règle générale, ne forcez que lorsque:
- Personne sauf vous n'a retiré les modifications que vous essayez d'écraser
- Vous pouvez forcer tout le monde à copier une nouvelle copie après la poussée forcée et faire en sorte que tout le monde applique ses modifications (les gens peuvent vous détester pour cela).
Poussez un objet spécifique vers une branche distante
Syntaxe générale
git push <remotename> <object>:<remotebranchname>
Exemple
git push origin master:wip-yourname
Poussez votre branche principale vers la branche d'origine de wip-yourname
(la plupart du temps, le référentiel à partir duquel vous avez cloné).
Supprimer une branche distante
Supprimer la branche distante équivaut à y insérer un objet vide.
git push <remotename> :<remotebranchname>
Exemple
git push origin :wip-yourname
Va supprimer la branche distante wip-yourname
Au lieu d'utiliser les deux-points, vous pouvez également utiliser l'indicateur --delete, qui est plus lisible dans certains cas.
Exemple
git push origin --delete wip-yourname
Poussez un seul engagement
Si vous avez un seul engagement dans votre branche que vous souhaitez envoyer à une télécommande sans rien appuyer, vous pouvez utiliser les éléments suivants:
git push <remotename> <commit SHA>:<remotebranchname>
Exemple
En supposant une histoire de git comme ça
eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local
pour pousser seulement commettre 347d700 à maître distant utiliser la commande suivante
git push origin 347d700:master
Modification du comportement de push par défaut
Current met à jour la branche du référentiel distant qui partage un nom avec la branche de travail en cours.
git config push.default current
Simple pousse à la branche en amont, mais ne fonctionnera pas si la branche en amont est appelée quelque chose d'autre.
git config push.default simple
En amont, la poussée vers la branche en amont, quel que soit l’appel.
git config push.default upstream
L’appariement pousse toutes les branches qui correspondent sur la configuration locale et distante de git config push.default en amont
Après avoir défini le style préféré, utilisez
git push
mettre à jour le référentiel distant.
Balises Push
git push --tags
Pousse toutes les git tags
du référentiel local qui ne sont pas dans le référentiel distant.