In Git, qual è la differenza tra master origine / master vs origine?

Lo so, origine è un termine per il repository remoto e master è il ramo lì.

Sto omettendo di proposito il “contesto” qui e spero che la risposta non dipenda dal contesto. Quindi, nelle righe di comando git, qual è la differenza tra origine / master e master di origine . C’è un modo non ambiguo per capire quando usare origin / master e quando dovrei usare l’ origine master ?

Ci sono in realtà tre cose qui: il origin master è due cose separate, e l’ origin/master è una cosa. Tre cose in totale.

Due rami:

  • master è una filiale locale
  • origin/master è un ramo remoto (che è una copia locale del ramo denominato “master” sul remoto denominato “origine”)

Un telecomando:

  • origin è un telecomando

Esempio: fai due passi

Poiché origin/master è un ramo, puoi unirlo. Ecco un pull in due passaggi:

Fase 1, recupera il master dall’origine remota. Il ramo master origin verrà recuperato e la copia locale sarà denominata origin/master .

 git fetch origin master 

Quindi unisci origin/master in master .

 git merge origin/master 

Quindi puoi trasferire le tue nuove modifiche nel master indietro origin :

 git push origin master 

Altri esempi

Puoi recuperare più rami per nome …

 git fetch origin master stable oldstable 

Puoi unire più rami …

 git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290 

origin/master è il ramo locale che rappresenta lo stato del ramo master origin remota.

origin master è il master ramo origin remota.

Esempio (nel master ramo locale):

 git fetch # get current state of remote repository git merge origin/master # merge state of remote master branch into local branch git push origin master # push local branch master to remote branch master 

origin/master è il ramo master remoto

Di solito, dopo aver fatto un git fetch origin per portare tutte le modifiche dal server, si farebbe un git rebase origin/master , per ribaltare le modifiche e spostare il ramo sull’ultimo indice. Qui, origin/master si riferisce al ramo remoto, perché in pratica stai dicendo a GIT di rebase il ramo origin/master sul ramo corrente.

Ad esempio, potresti utilizzare il origin master quando si preme. git push origin master sta semplicemente dicendo a GIT di inviare al repository remoto il ramo master locale.

origin è un nome per l’URL di git remoto. Ci possono essere molti altri esempi di telecomandi qui sotto.

 bangalore => bangalore.example.com:project.git

 boston => boston.example.com:project.git

per quanto riguarda l’origine / master (esempio bangalore / master), è il puntatore al commit “master” sul sito bangalore . Lo vedi nel tuo clone.

È ansible che bangalore remoto sia avanzato da quando hai fatto “fetch” o “pull”

Dato che è ansible passare origin/master (anche se in stato di distacco) mentre il cavo di rete è scollegato, deve essere una rappresentazione locale del ramo master origin .