138 votes

Git : ajouter, pousser, commettre

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

Je suis un peu confus car je viens du SVN, où "update" ajoute des choses, et commit fait un "push" et ajoute aussi des choses.

Il y a toutes les fonctions différentes dans git. J'espère une explication à partir de votre expérience.

2 votes

184voto

r.m. Points 25280
  1. git add ajoute vos fichiers modifiés à la file d'attente à engager plus tard . Les fichiers ne sont pas validés

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

  3. git push pousse vos changements vers le référentiel distant.

Ce chiffre de ce cheat sheet git donne une bonne idée du flux de travail

enter image description here

git add n'est pas sur la figure parce que la façon suggérée de s'engager est le combiné git commit -a mais vous pouvez mentalement ajouter un git add au bloc de changement pour comprendre le flux.

Enfin, la raison pour laquelle push est une commande séparée est à cause de git La philosophie de l'UE. git est un système de versionnement distribué, et votre répertoire de travail local est votre référentiel ! Toutes les modifications que vous apportez sont instantanément reflétées et enregistrées. push est uniquement utilisé pour mettre à jour le dépôt distant (que vous pouvez partager avec d'autres) lorsque vous avez terminé votre travail. C'est une bonne façon de travailler et d'enregistrer les modifications localement (sans frais de réseau) et de ne les mettre à jour que lorsque vous le souhaitez, au lieu de le faire à chaque livraison. Cela a pour conséquence indirecte de faciliter les commits/branches, etc. (pourquoi pas, n'est-ce pas ? qu'est-ce que cela vous coûte ?) ce qui conduit à plus de points de sauvegarde, sans toucher au référentiel.

0 votes

Est-ce que push commet localement et pousse ensuite vers le serveur distant ou est-ce qu'il faut d'abord commiter puis pousser pour obtenir du travail vers le dépôt distant ?

3 votes

Vous devez d'abord effectuer un commit ("git commit") qui met à jour votre dépôt local (c'est-à-dire sur votre machine locale) puis vous devez effectuer un push vers le serveur ("git push") qui met à jour le dépôt distant (sur le serveur github par exemple).

0 votes

J'aimerais bien avoir une fonction "ajouter mentalement" dans Git !

100voto

Dustin Points 35205

git add sélectionne les changements

git commit enregistre les changements au niveau local

git push modifications des actions

30voto

Adam Byrtek Points 5791
  • git add ajoute des fichiers à l'index Git, qui est une zone de transit pour les objets prêts à être commités.
  • git commit commet les fichiers de l'index dans le référentiel, git commit -a est un raccourci pour ajouter d'abord tous les fichiers suivis modifiés à l'index.
  • git push envoie tous les changements en attente au dépôt distant auquel votre branche est associée (par exemple, sur GitHub).

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

0 votes

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

14voto

Sebastian Raschka Points 1056

Je n'ai pas bien compris ce que fait réellement "ajouter". Je viens de lire un paragraphe très éclairant 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 commande git add. Si vous commitez maintenant, la version de benchmarks.rb telle qu'elle était telle qu'elle était la dernière fois que vous avez lancé la commande git add est celle qui sera utilisée pour le et non pas la version du fichier telle qu'elle est dans votre répertoire de travail de travail lorsque vous exécutez git commit. Si vous modifiez un fichier après avoir lancé git add, vous devez exécuter git add à nouveau pour mettre en scène la dernière version de le fichier

Extrait de : Chacon, Scott. "Pro Git." Springer, 2009-08-19T00:00:00+00:00. iBooks. Ce matériel peut être protégé par des droits d'auteur.

5voto

lord_t Points 1709

Très bien. pdf sur de nombreux secrets de GIT.

Ajouter est identique au add de svn (bien que parfois il soit utilisé pour marquer un fichier résolu).

Engagez-vous est aussi le même que celui de svn, mais il commet le changement dans votre dépôt local.

2 votes

Maintenant je dois aller chercher svn add et commit. Ma grande crainte : que leur documentation me renvoie ensuite à git add et commit. Et lord_t est l'auteur de cette documentation.

0 votes

L'auteur de la question a une connaissance de SVN, donc je suppose qu'il connaît les commandes de svn.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X