60 votes

comprendre git fetch puis fusionner

Venant d'un svn fond, j'ai eu cette question:

http://stackoverflow.com/questions/1138990/git-equivalent-of-svn-status-u

(qu'est-ce que le git équivalent de svn status -u)

Et je comprends, vous n'avez:

git fetch
git log ..origin/master

Mais, j'imagine que l' origin/master de la partie dépend de la direction générale? Il ne serait pas maître si j'ai été suivi d'une branche à distance?

Aussi, je ne comprends pas l' git merge origin/master précisément. Je suppose que cela signifie seulement qu' git fetch attrapé les modifications de la distance et de les mettre dans la base de données de git système origin/master et je suis juste en maître? Que faire si je l'ai récupéré des modifications, vérifier ce qui a été fait, je suis horrifié par les changements et ne veulent pas fusionner? Comment puis-je fondamentalement abandonner?

120voto

Jakub Narębski Points 87537

git fetch

git fetch accaparement des changements de référentiel distant et le place dans le référentiel de l'objet de base de données. Il extrait également les branches d'un dépôt distant et les enregistre comme à distance-suivi des branches.

Lors de l'extraction de git vous indique où il stocke chaque branche sur le dépôt distant qu'il extrait. Par exemple, vous devriez voir quelque chose comme

   7987baa..2086e7b  master -> origin/master

lors de l'extraction. Cela signifie que 'origin/master' magasins où le "maître" est sur "l'origine" du référentiel.

Si vous examinez .git/config le fichier, vous pouvez voir le fragment suivant:

[remote "origine"]
 url = git://git.exemple.com/repo.git
 fetch = +refs/heads/*:refs/remotes/origin/*

Cela (entre autres) signifie que toute succursale " A " ('refs/heads/A') à l'origine de la télécommande (référentiel de vous cloné à partir d') serait enregistré comme "origine/A' ('refs/remotes/origin/A').

la commande git log ..origin/master

Comme vous pouvez le voir 'origin/master' est 'master' origine. Si vous êtes sur (par défaut) branche "maître", alors git log ..origin/master, ce qui est équivalent à git log HEAD..origin/master, ce qui, quand sur la branche "maître" est équivalent à git log master..origin/master la liste de tous les commits qui sont sur la branche "maître" dans le dépôt distant et ne sont pas dans la branche locale "maître" où vous faites votre travail.

Le plus générique de la version moderne de git (en supposant que, en amont et le suivi de l'information existe) serait d'utiliser tout simplement

$ git log ..@{u}

(Ici @{u} est synonyme @{upstream}, voir gitrevisions page de manuel).

git merge origin/master

git merge est utilisé pour joindre deux lignes de l'histoire. Si l'un des côtés je n'ai pas de travail depuis le dernier point d'embranchement (depuis la fusion de la base), la situation est soit en avance rapide (la branche sur laquelle vous êtes est tout simplement mis à jour à la pointe de la direction générale, vous êtes fusion), ou à jour (il n'y a rien de nouveau à la fusion, et la direction générale, vous êtes sur le reste inchangé).

git fetch suivie par git merge origin/master, lorsque sur la branche "maître", est l'équivalent de l'émission

$ git pull

Si vous ne voulez pas de fusion, vous n'avez pas besoin d'. Notez que vous pouvez utiliser, par exemple, git reset --hard HEAD@{1} pour revenir en arrière et jeter le résultat d' git pull si vous ne l'aimez pas.

5voto

strager Points 41713

git fetch téléchargements de tous les changements nécessaires pour représenter la branche distante. Typiquement, cela est - origin/master ou similaire.

git merge fusionne deux branches ensemble par la création de nouvelles validations ou l'avance rapide (ou une combinaison). Il ne changera engage que vous avez fait, et vous pouvez toujours revenir à votre ancienne branche (à l'aide d' git reset ou git checkout).

Notez que git pull est git fetch suivie par git merge (ou git rebase si --rebase est donné).

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