2012-07-17 2 views
12

Ultimamente ho unito un ramo su cui stavo lavorando con il ramo 'master'. Devo avere (ancora una specie di git n00b) fatto qualcosa quando si spinge o tira che ha creato sia un ramo origin/master sia uno origin/HEAD. Sfortunatamente, non ho tenuto traccia di quali comandi ho eseguito per farlo. Attualmente, la mia squadra ha un sacco di codice nelle loro copie master che non riesco a ottenere quando controllo il progetto (anche se ho clone in una nuova posizione).Il mio git branch mostra 'origine/master' e 'origine/HEAD' in Sourcetree e non so come unire i due

Ecco uno screenshot di ciò che sta mostrando SourceTree:

2 branches

ho veramente bisogno di ottenere questo risolto in modo da poter continuare a lavorare in modo che qualsiasi aiuto sarà molto apprezzato.

+0

Non è qualcosa di cui devi preoccuparti. Ce l'ho anche in alcuni dei miei repository, ma è qualcosa di simile a un semplice puntatore a "origine/master". Se fai 'git branch -r', dovresti vedere questo. – Shahbaz

+0

Hmmm ... qualche idea sul perché il mio maestro sia così fuori sincrono con quelli dei miei compagni di squadra? –

+0

Beh, certo, dato che hai repository diversi, devi portarli in sincronia. Quindi, la tua domanda è in realtà "come unire il tuo lavoro con quello di origine?" – Shahbaz

risposta

6

Le diramazioni che iniziano con origin/ sono le cosiddette "braches di localizzazione remota". Ti dicono la posizione dei rami nel repository origin l'ultima volta che git è stato scaricato da quel repository.

E 'nulla di cui preoccuparsi - questo è in realtà informazioni utili. Se si pensa che quelle posizioni filiali non sono aggiornati, è possibile eseguire:

git fetch origin 

... per aggiornarli.

In qualsiasi repository, HEAD è un tipo speciale di ref (un "symref") che rappresenta il ramo corrente (o commit corrente, se non si è su un ramo particolare).


Si può vedere nel diagramma che il ramo master è in realtà uno commettere davanti origin/master, quindi se i vostri colleghi stanno spingendo per master in origin ed è stato eseguito git fetch origin (o qualcosa di equivalente) di recente, è già tutto il loro lavoro. Tuttavia, mancheranno sul tuo impegno fino a quando non lo spingerai.

Tu dici:

Attualmente, la mia squadra ha un mucchio di codice nelle loro copie master che non sto ottenendo quando posso controllare il progetto (anche se clono in una nuova posizione).

Se questo è il caso, probabilmente stanno spingendo verso un altro ramo, un altro repository, o non hanno affatto spinto il loro lavoro.

+0

Inoltre 'git merge origin/' per unire '' con il ramo attualmente estratto. In questo modo, non solo aggiorni la tua copia dei rami di "origin", ma in realtà ottieni i cambiamenti in quelli locali. – Shahbaz

+1

Non l'ho menzionato perché nella situazione dell'OP unire 'origin/master' non farà nulla - il suo' master' è * avanti * di 'origin/master'. –

+0

Sì, l'ho appena detto per rendere la risposta più completa. Dal momento che dice "Attualmente, la mia squadra ha un sacco di codice nelle loro copie master che non ottengo quando controllo il progetto", gli hai detto di "git fetch", ho detto che in seguito avrebbe dovuto merge'. – Shahbaz

7

E 'solo un puntatore a padroneggiare, un link simbolico, se lo si desidera. Si può tranquillamente eliminarlo facendo quanto segue in un terminale (o git bash/cygwin per gli utenti di Windows):

  1. navigare al repository
  2. eseguire: git remote set-head origin -d

ora, dovrebbe essere andato :

$ git branch -r 
origin/master