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:

  1. Créez le référentiel sur GitHub (le cas échéant)
  2. Copiez l'URL qui vous a été donnée sous la forme https://github.com/USERNAME/REPO_NAME.git
  3. Accédez à votre référentiel local et exécutez git remote add origin URL
    • Pour le vérifier, lancez git remote -v
  4. 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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow