Différence conceptuelle entre git fetch et git merge? Pourquoi se sentent-ils pareils à moi?

Donc git fetch signifie conceptuellement aller chercher quelque chose à partir d'une twig distante. Maintenant, git merge mybranch signifie merge mybranch dans la twig actuelle. Je ne vois pas quelle est la différence entre les deux? Quelle est la différence conceptuelle "droite devant l'œil" qui me manque?

Solutions Collecting From Web of "Différence conceptuelle entre git fetch et git merge? Pourquoi se sentent-ils pareils à moi?"

Git fetch ne modifie pas votre copy de travail

git fetch va:

Télécharger des objects et des references d'un autre référentiel

Il ne fait rien à votre copy de travail ou aux twigs locales – il ne télécharge que les nouveaux commits et met à jour les references des twigs distantes.

La fusion Git modifie votre copy de travail

Git Fusion va:

Joignez-vous à deux histoires de développement ou plus set

C'est à dire merge dans l'historique de la twig en cours. Il fonctionne uniquement dans le référentiel actuel, il ne communique pas avec ou ne modifie pas un référentiel distant.

Git pull: aller chercher et merge

Habituellement, vous devez récupérer les validations d'un autre référentiel, puis les merge (ou les rebaser) dans vos twigs locales.

git pull est une command connexe. Ce sera:

Récupérer et merge avec un autre référentiel ou une twig locale

C'est à dire:

  • download des objects à partir d'un référentiel distant
  • mettre à jour les references de la succursale
  • merge la twig distante dans la twig locale

en une command.

git fetch est d'get les changements sans merge, vous donnant le contrôle. Git tire fait une search et fusionne.

get fetch ne change pas vos données de travail. git merge fait. Vous pouvez voir les changements de code avant qu'ils ne se produisent avec un fetch git

Peut-être que vous êtes confus venant d'un autre système de contrôle de version comme SVN? Dans SVN, le "fetching from remote" (= "svn update") obtient les changements et les "intègre".

Dans Git, il s'agit de deux opérations distinctes: git fetch n'obtient que des changements de la télécommand mais ne les "intègre" pas. git merge intègre ensuite ces changements.