2014-10-07 15 views

risposta

18

git status si racconta lo stato della vostra lavorare albero di directory e il vostro indice di (dove in scena cambia vivono) rispetto alle ultime commettere sul ramo corrente. L'output che stai vedendo significa che i file sul tuo disco corrispondono esattamente all'ultimo commit sul tuo ramo. Cioè, non c'è "niente da commettere".

Il messaggio da GitHub non si tratta di commettere, ma circa la fusione . GitHub vorrebbe offrirti un metodo con un clic per unire questo ramo nel tuo ramo master, ma non lo può, perché tale unione genera conflitti. Poiché GitHub non ha un modo per aiutarti a risolvere i conflitti attraverso il sito web, ti chiede di risolverli sul tuo computer.

Il modo migliore per gestire questa situazione è di unire il ramo master corrente nel ramo dell'argomento localmente e quindi inviare il risultato a GitHub. Per fare ciò, procedere come segue: (. Sto assumendo che il telecomando GitHub è chiamato origin E in genere è, e probabilmente sapete, se non lo è.)

$ git checkout pr12 # If you're not already on pr12 
$ git fetch origin 
$ git merge origin/master 

Prima facciamo certo siamo nel ramo giusto Quindi ci assicuriamo di avere l'ultimo codice dal ramo master sul repository GitHub. Quindi uniamo il codice nel nostro ramo pr12.

Ricorda: git fetch origin aggiorna nostrana origin/master ad essere la stessa di GitHub di master, ma non tocca la sezione locale chiamato semplicemente master. Dovremmo controllare il nostro ramo master per apportare modifiche ad esso. Invece, aggiorniamo la nostra idea di cosa c'è su GitHub (origin/master) e lo uniamo al nostro pr12.

Quando si esegue il comando merge, verranno visualizzati i conflitti. Quelle rappresentano decisioni che git (e GitHub) non potrebbero fare automaticamente. Modifica quei file in modo che siano come vuoi che finiscano. Poi:

$ git add each/file.txt that/had/conflicts.conf 
$ git commit # Your editor will open with a pre-filled 
       # commit message. Just save and close the file. 
$ git push origin pr12 

Cioè, aggiungiamo le versioni dei file che abbiamo fissato, quindi completare l'unione impegniamo abbiamo iniziato con git merge. Infine, spingiamo il ramo con il nuovo comando di unione fino a GitHub.

Poiché abbiamo risolto i conflitti, questo ramo dovrebbe essere banale per unire l'altro modo, in master. GitHub lo noterà e ti darà un pulsante verde "Unisci".

+0

Dopo aver eseguito l'unione di origine/master praticamente ogni file dice "sia aggiunto" che "nuovo file". – Nathan

+0

È strano. Git ti sta dicendo che, dal momento in cui il punto in cui 'origin/master' e' pr12' si sono separati, entrambi i rami hanno aggiunto quei file. Puoi trovare dove si sono divergenti visivamente usando 'git log --graph --oneline origin/master pr12'. L'output di quel comando assomiglia a quello che ti aspetti dalla storia di questi due rami? – Peeja

+0

Quindi ho un po 'capito. Ma ora tutto dal repository originale che è stato fuso con il repository biforcato appare nel ramo. E quando provo a ripristinare quell'unico commit, dice qualcosa sull'interruttore -m. – Nathan

5

Quando ho riscontrato questo messaggio, era perché il mio forcella di un repository particolare era dietro l'originale. Nel mio caso particolare il repository che avevo biforcato è pydata/pandas.

ho dovuto configure a remote for my fork facendo:

> git remote add upstream [email protected]:original_user/original_repo.git 
> git remote -v 
origin [email protected]:some_user/pandas.git (fetch) 
origin [email protected]:some_user/pandas.git (push) 
upstream [email protected]:pydata/pandas.git (fetch) 
upstream [email protected]:pydata/pandas.git (push) 

(Nota:.. git remote add upstream è il modo di un git di dire "Aggiungere una chiamata a distanza "a monte" Il nome può essere qualsiasi cosa)

poi ho fetched the latest commits dalla repo originale:

> git fetch upstream 
> git checkout master # Just in case you're not already on master 
> git merge upstream/master 

e infine spingere la r fusa epo back to github:

> git push 
Problemi correlati