Come "estrarre" da un ramo locale in un altro?


231

Sembra così semplice, ma non riesco proprio a capirlo. Ho fatto un ramo sperimentale qualche tempo fa, e ora vorrei inserire tutti i cambiamenti avvenuti sul master da quando l'ho realizzato. Questo è tutto locale. Voglio passare dal master locale a my_branch locale, ma non posso farlo. Questo non sembra funzionare, dicendomi che master non è un repository git:

git pull master

Risposte:


339

devi dire a git da dove estrarre, in questo caso dalla directory / repository corrente:

git pull . master

ma quando lavori localmente, di solito devi solo chiamare merge (pull internally call merge):

git merge master

1
Mi piace git pull . masterperché penso che controllerà se c'è qualcosa di nuovo dall'origine. È vero?
Josiah Yoder

1
@JosiahYoder no, in pull .particolare dice a Git di estrarre dal repository situato in .(ovvero la directory / repository corrente). originè solo una scorciatoia per "qualunque sia la posizione del repository definita nel .git/configfile (di solito impostata automaticamente durante la clonazione di un repository)
knittl

1
Oh! Quindi git pull . masterestrarrebbe dal repository locale invece che dall'origine? (Nessun recupero dall'origine !?) C'è qualche vantaggio git pull . masterrispetto a git merge masterallora?
Josiah Yoder,

2
@JosiahYoder sì, esattamente, verrebbe "estratto" dal repository locale anziché dal repository di origine. Non viene eseguito il recupero (perché tutto dal repository locale è già qui!). Non c'è alcun vantaggio: entrambi i comandi fanno più o meno lo stesso. Se si sta procedendo rapidamente, è possibile utilizzare push . origin/branch:branch(non tirare) per aggiornare le filiali locali, senza prima verificarle.
knittl

Ti lodo. Con il potere di Greyskull!
R Claven,

45

Quello che stai cercando è l'unione.

git merge master

Con pullte recupera le modifiche da un repository remoto e le unisci nel ramo corrente.


38

Abbastanza vecchio post, ma potrebbe aiutare qualcuno di nuovo a git.

Andrò con

git rebase master
  • cronologia dei registri molto più pulita e nessun commit di unione (se eseguito correttamente)
  • è necessario affrontare i conflitti, ma non è così difficile.

1
ci sono certamente molti modi per un team di sviluppo di gestire i propri processi di ramificazione. Personalmente, uso git da 8 anni e non ho mai dovuto fare un passo indietro. Uso sempre l'unione e ha sempre soddisfatto le mie esigenze. Sicuramente con rebase, proprio come unire, potrebbero sorgere scenari in cui git non può decidere automaticamente il risultato corretto della "fusione" di due serie di modifiche. Per quanto riguarda il punto sollevato su una cronologia di commit "più pulita". Personalmente, la mia preferenza è quella di mantenere tutta la cronologia dei commit, nel caso in cui dovessi mai fare un po 'di "commit archeology" (come spesso accade!)
user3441604

-1

Se stai cercando un nuovissimo pull da un altro ramo come da locale a master, puoi seguire questo.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.