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.