Git: ajouter vs push vs commit


115

Quelle est la différence entre git add, pushet commit?

Juste un peu confus venant de SVN, où "update" "ajoutera" des choses, et commit fait un "push" et "ajoutera" aussi

Il y a toutes les fonctions différentes dans git. En espérant une explication de votre expérience.


Réponses:


163
  1. git addajoute vos fichiers modifiés à la file d' attente pour être validés ultérieurement . Les fichiers ne sont pas validés

  2. git commitvalide les fichiers qui ont été ajoutés et crée une nouvelle révision avec un journal ... Si vous n'ajoutez aucun fichier, git ne validera rien. Vous pouvez combiner les deux actions avecgit commit -a

  3. git push transmet vos modifications au référentiel distant.

Ce chiffre de cette feuille de triche git donne une bonne idée du flux de travail

entrez la description de l'image ici

git addn'est pas sur la figure car la méthode suggérée pour valider est la combinaison git commit -a, mais vous pouvez ajouter mentalement un git addau bloc de modification pour comprendre le flux.

Enfin, la raison pour laquelle pushest une commande séparée est à cause de gitla philosophie de. gitest un système de versionnage distribué, et votre répertoire de travail local est votre référentiel! Tous les changements que vous engagez sont instantanément reflétés et enregistrés. pushn'est utilisé que pour mettre à jour le référentiel distant (que vous pourriez partager avec d'autres) lorsque vous avez terminé ce sur quoi vous travaillez. C'est une manière intéressante de travailler et d'enregistrer les modifications localement (sans surcharge du réseau) et de les mettre à jour uniquement lorsque vous le souhaitez, au lieu de chaque validation. Cela se traduit indirectement par des commits / branchements plus faciles, etc.


Alors, est-ce que push commit localement puis pousse vers le serveur distant ou faut-il d'abord s'engager puis pousser pour obtenir du travail vers le référentiel distant?
Andrew S

2
Vous devez d'abord commettre ("git commit") qui met à jour votre dépôt local (aka sur votre machine locale) puis vous devez pousser vers le serveur ("git push") qui met à jour le dépôt distant (sur le serveur github par exemple. )
Romain

J'adorerais une fonction "ajouter mentalement" dans Git!
Junchen Liu

1
Il est conseillé non seulement de s'engager souvent, mais aussi de pousser souvent. Cela protège votre travail lorsque votre disque dur tombe en panne.
CCC

86

git add sélectionne les modifications

git commit enregistre les changements LOCALEMENT

git push partage les changements


22
  • git add ajoute des fichiers à l'index Git, qui est une zone de préparation pour les objets prêts à être validés.
  • git commitvalide les fichiers de l'index dans le référentiel, git commit -aest un raccourci pour ajouter d'abord tous les fichiers suivis modifiés à l'index.
  • git push envoie toutes les modifications en attente au référentiel distant auquel votre branche est mappée (par exemple sur GitHub).

Pour comprendre Git, vous devrez investir plus d'efforts que de simplement jeter un coup d'œil sur la documentation, mais cela en vaut vraiment la peine. N'essayez simplement pas de mapper les commandes Git directement à Subversion, car la plupart d'entre elles n'ont pas d'équivalent direct.


Quelqu'un devrait expliquer la différence entre github local et distant. Ce que vous avez en local et remte. C'est la clé que vous devez trouver
Mehdi Amrollahi

12

J'étais confus sur ce que fait vraiment «ajouter». Je viens de lire un paragraphe très instructif du livre Git Pro que j'aimerais ajouter ici, car il clarifie les choses

«Il s'avère que Git met en scène un fichier exactement tel qu'il est lorsque vous exécutez la commande git add. Si vous vous engagez maintenant, la version de benchmarks.rb telle qu'elle était lors de la dernière exécution de la commande git add est la manière dont elle ira dans le commit, pas la version du fichier telle qu'elle apparaît dans votre répertoire de travail lorsque vous exécutez git commit. Si vous modifiez un fichier après avoir exécuté git add, vous devez réexécuter git add pour mettre en scène la dernière version du fichier: "

Extrait de: Chacon, Scott. «Pro ​​Git.» Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Ce matériel peut être protégé par le droit d'auteur.


7

add dit à git de commencer à suivre un fichier.

commit valide vos modifications actuelles sur votre référentiel local

push pousse votre dépôt local en amont.



5

Très beau pdf sur de nombreux secrets GIT.

Add est identique à l'ajout de svn (cependant, il est parfois utilisé pour marquer le fichier résolu).

La validation est également la même que celle de svn, mais elle valide la modification dans votre référentiel local.


2
Maintenant, je dois aller chercher svn add et commettre. Ma grande peur: leurs docs me renverront alors à git add et commit. Et lord_t est l'auteur desdits documents.
eric

L'auteur de la question connaissait SVN, j'ai donc supposé qu'il connaissait les commandes de svn.
lord_t

0

add -in git est utilisé pour dire à git quels fichiers nous voulons valider, il place les fichiers dans la zone de préparation

commit- in git est utilisé pour enregistrer les fichiers sur la machine locale afin que si nous apportons des modifications ou même supprimons les fichiers, nous pouvons toujours récupérer nos fichiers validés

push - si nous validons nos fichiers sur la machine locale, ils sont toujours susceptibles d'être perdus si notre machine locale est perdue, endommagée, etc., pour garder nos fichiers en sécurité ou pour partager nos fichiers, nous voulons généralement conserver nos fichiers sur une télécommande référentiel comme Github. Pour enregistrer sur des référentiels distants, nous utilisons push

exemple Mise en place d'un fichier nommé index.html git add index.html

Commettre un fichier qui est préparé git commit -m 'nom de votre commit'

Pousser un fichier vers Github git push origin master

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.