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".
Dopo aver eseguito l'unione di origine/master praticamente ogni file dice "sia aggiunto" che "nuovo file". – Nathan
È 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
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