Verifică acum ramurile la distanță în git în siguranță?

Tocmai am început să învăț Git și tutorialul pe care îl folosesc spune că atunci când se clonează depozitele de la distanță , trecerea la o ramură aflată la distanță este un număr mare de nu . Asta este - dacă am clonat un depozit care are o ramură nume branch1 , și vreau să lucrez la el, eu trebuie să folosească

git checkout --track -b branch1 origin/branch1

să o urmărești. Cu toate acestea, când am încercat să o folosesc

git checkout branch1

Git a răspuns

Branch branch1 set up to track remote branch branch1 from origin.
Switched to a new branch 'branch1'

Deci, bunul meu simț mi-a spus că, de când a fost scris acest tutorial, dezvoltatorii lui Git au stabilit acea capcană și au făcut-o astfel încât dacă cineva încearcă să treacă la o ramură aflată la distanță, Git o face în mod automat și creează o filială locală care o urmărește. Cu toate acestea, nu găsesc nicio referință la această modificare în notele de lansare sau într-o căutare Google.

Deci, au rezolvat? Acum este sigur să verificați acele sucursale izolate? Sau poate am înțeles greșit avertismentul din tutorial și se referea la o altă capcană pe care ar trebui să o supraveghez?

3
adăugat
Vizualizări: 3

2 răspunsuri

Nu nu verificați o ramură la distanță.

Verificarea branch1 nu este aceeași cu verificarea "ramurii de la distanță". Următoarea comandă încearcă să verifice o ramură locală care nu există:

git checkout branch1

în timp ce următoarea comandă verifică comiterea indicată de ramura la distanță:

git checkout origin/branch1

care are ca rezultat un cap detașat , eventual captura pe care tutorialul o avertiza.

Git va crea automat o sucursală locală și o va seta pentru a urmări o telecomandă cu același nume dacă încercați să verificați o sucursală care nu există local, dar care are o sucursală cu același nume pe o telecomandă.

5
adăugat
Văd ... Cred că tutorialul a avertizat despre asta deoarece este un tutorial pentru oamenii care trec de la SVN la Git și din moment ce filialele SVN sunt doar directoare, așa că pentru a verifica o ramură trebuie să verificați acel director, utilizatorii SVN ar putea încerca pentru a aplica aceeași metodă în Git ...
adăugat autor Idan Arye, sursa

Din Documentație/RelNotes/1.6.6.txt :

  • "git checkout frotz" when there is no local branch "frotz" but there is only one remote tracking branch "frotz" is taken as a request to start the named branch at the corresponding remote tracking branch.

Deci, da, dezvoltatorii Git simplificau procesul un pic: nu mai trebuie să specificați - track -b pentru a crea o ramură locală de urmărire la distanță. IIRC, înainte de această schimbare, Git obișnuia să se plângă pentru o fracțiune locală lipsă "frotz".

Ca și în cazul meagar, verificarea ramurilor la distanță este posibilă folosind sintaxa git checkout origin/branch1 : este bine să faceți acest lucru dacă doriți doar să vă uitați în jur, dar nu trebuie să faceți modificări permanente lor. Iată avertismentul că Git se tipărește atunci când verificați o ramură la distanță:

$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at a48aafd... Merge branch 'maint'
1
adăugat