git pull pe o ramură diferită (Programare, Git)

nobilă a intrebat.

Dacă lucrez la o ramură și apoi îmi dau seama că trebuie să fuzionez o altă ramură în a mea, iată care este fluxul meu de lucru actual (pentru acest exemplu, să spunem că lucrez la ramura mea și vreau să fuzionez în master):

git stash
git checkout master
git pull
git checkout my-branch
git merge master
git stash pop

Există o modalitate în git de a extrage o altă ramură decât cea verificată în prezent sau există o modalitate mai bună de a face acest lucru?

De exemplu, iată ce aș dori să pot face (să spunem din nou că lucrez pe my-branch și vreau să fuzionez în master):

git pull master
git merge master

Pagina de manual git-pull spune că un git pull este doar un get fetch urmat de un git merge, deci există o modalitate de a face partea de fuziune a git pull pe o altă ramură decât cea care este verificată în prezent?

Sau ceea ce cer eu nu este posibil?

Comentarii

  • puteți face un get pull master la ramura mea, după ce ați lucrat, puteți merge la ramura master și git merge my-branch –  > Por Alexandre Mendes.
  • Nu-mi place git pull pentru că poate introduce un commit de fuziune în spatele tău, iar eu vreau să actualizez toate ramurile mele de urmărire. În acest scop, eu am scris un addon care va prelua și va înainta rapid orice ramură de urmărire. Eu însumi și alții îl folosim de ceva timp și este cu siguranță un economizor de timp. Partea bună este că, dacă nu este o fuziune rapidă, vă va lăsa să o rezolvați și să o îmbunătățiți. Acest lucru funcționează bine pentru noi, deoarece folosim un flux de lucru rebase destul de des. –  > Por John Szakmeister.
  • Ah, înțeleg… vreți să aduceți de fapt și ramura dvs. la zi cu master. Instrumentul meu nu va face acest lucru. –  > Por John Szakmeister.
  • @jszakmeister dacă vreau să îmbin ultimele actualizări de la master în my-branch nu trebuie să o fac? –  > Por nobilă.
  • Asta răspunde la întrebarea ta? Unificarea, actualizarea și extragerea ramurilor Git fără a utiliza checkout-uri –  > Por icc97.
4 răspunsuri
Robert Kraaijeveld

Încercați acest lucru:

git pull yourRepositoryName master

Comentarii

  • Am încercat asta, dar cred că nu mi-am dat seama ce trebuie să pui pentru yourRepositoryName. Nu este chiar numele depozitului, ci url-ul pe care l-ați folosit pentru a verifica depozitul. De exemplu: git pull [email protected]:foo/bar.git master –  > Por nobilă.
  • Corect, am presupus că ai făcut un alias pentru această adresă URL. Mă bucur că v-am ajutat! –  > Por Robert Kraaijeveld.
  • Ah, deci dacă aveți opțiunea implicită origin veți rula git pull origin master –  > Por noblețe.
  • Exact. Puteți specifica singuri alias-urile folosind `git remote add yourAlias github.com/yourGitHubRepo´ –  > Por Robert Kraaijeveld.
  • Și pentru oricine altcineva care dă peste asta, git remote -v va afișa toate aliasurile și URL-urile acestora. Și aici găsiți mai multe informații despre alias-uri: gitref.org/remotes –  > Por noblețe.
Chris

Am găsit o incantație care a funcționat pentru mine:

git fetch origin master:master

apoi (dacă doriți să fuzionați imediat):

git merge master

Am fost foarte surprins de cât de greu a fost să găsesc un răspuns la acest lucru, deoarece se pare că ar fi un caz de utilizare comună.

Comentarii

  • Această sintaxă este de fapt utilă dacă doriți să trageți ramura sub un nume de ramură locală diferit. –  > Por DustWolf.
  • Acesta ar trebui să fie răspunsul acceptat, deoarece răspunde exact la întrebare. Răspunsul acceptat nu oferă comanda corectă și face ceva la care nu vă așteptați pe baza întrebării. –  > Por stricq.
  • Are get fetch origin branch:branch face exact același lucru ca și git pull apelat din branch? –  > Por C. Binair.
Peter

Ai putea încerca și asta:

git fetch
git merge origin/master

Acest lucru nu va actualiza localul dvs. master dar va unifica cele mai recente origin/master în ramura locală curentă.

Comentarii

  • Dacă fișierul meu local master nu este actualizat, atunci nu se va actualiza fuziunea din master în my-branch nu va găsi nicio modificare pe care să o integreze? (presupunând că am fuzionat deja master în my-branch înainte de a executa git fetch și că fetch a găsit modificări în master) –  > Por nobilitat.
  • Să presupunem că vă aflați pe master ramură. git pull este de fapt doar o prescurtare pentru git fetch apoi git merge origin/master. Partea de preluare actualizează toți indicatorii de urmărire la distanță (origin/master, , origin/whatever) și descarcă toate obiectele dependente. Acest lucru nu efectuează nicio fuziune – ceea ce înseamnă că acum aveți opțiunile de a alege ce doriți să fuzionați în ce. –  > Por Peter.
  • Aceasta este o lectură bună, cu câteva diagrame bune care ilustrează acest lucru: git-scm.com/book/en/v2/Git-Branching-Remote-Branches –  > Por Peter.
SebMa

Ce zici de asta :

$ git pull origin my-branch

Comentarii

  • ar trebui să vă explicați răspunsul sau cel puțin să adăugați niște referințe, decât ceilalți vor putea să vă înțeleagă pe deplin răspunsul. –  > Por deepcell.

Tags: