Git nuotolinio slyvų - ne tiek daug nupjautų šakų, kaip tikėjausi

„Man“ puslapyje:

 Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>". 

Taigi, aš ištryniau filialų krūva naudojant

 git push origin :staleStuff 

ir tada pradėjo

 git remote prune origin 

Tačiau buvo nutrauktas tik vienas vietinis padalinys. Kai kuriuos iš šių filialų sukūrė aš, kai kurie - darbuotojai. Ar tai reiškia, kad pirmiausia nepamiršiau šių šakų?

105
28 окт. Felixyz nustatė spalio 28 d 2010-10-28 10:32 '10, 10:32, 2010-10-28 10:32
ответ 1 atsakymas

Kai naudojate „ git push origin :staleStuff , ji automatiškai ištrina origin/staleStuff , taigi, kai origin/staleStuff git remote prune origin origin/staleStuff šaką, kurią pašalino kažkas. Labiausiai tikėtina, kad jūsų darbuotojai turėtų paleisti „ git prune , kad atsikratytų nuotolinių filialų.


Taigi, ką tiksliai daro git remote prune ? Pagrindinė idėja: vietiniai filialai (nekontroliuojami filialai) neturi įtakos git remote prune komandai ir turi būti pašalinti rankiniu būdu.

Dabar tikrasis geresnio supratimo pavyzdys:

Turite nuotolinį saugyklą su dviem filialais: master ir feature . Tarkime, kad dirbate abiejuose filialuose, todėl jūs turite šias nuorodas savo vietinėje saugykloje (siekiant išvengti painiavos nurodomi visi nuorodų pavadinimai):

  • refs/heads/master (trumpojo vardo master )
  • refs/heads/feature (trumpojo vardo feature )
  • refs/remotes/origin/master ( refs/remotes/origin/master trumpasis pavadinimas)
  • refs/remotes/origin/feature ( refs/remotes/origin/feature pavadinimas refs/remotes/origin/feature trumpas pavadinimas)

Dabar tipiškas scenarijus:

  • Kai kurie kiti kūrėjai baigia darbą su feature , sujungia jį į master ir ištrina feature šaką iš nuotolinio saugyklos.
  • Pagal numatytuosius nustatymus, kai paleisite „ git fetch (arba „ git pull ), nuorodos nėra pašalinamos iš vietos saugyklos, todėl vis dar turite visas 4 nuorodas.
  • Jūs nusprendėte juos valyti ir paleisti git remote prune origin .
  • „git“ aptinka, kad feature filialas“ nebėra, taigi refs/remotes/origin/feature yra pasenusi filialas, kurį reikia pašalinti.
  • Dabar jūs turite 3 nuorodas, įskaitant refs/heads/feature , nes git remote prune nėra pašalinamos nuorodos refs/heads/* nuorodos.

Galite identifikuoti vietines šakas, susijusias su nuotolinio stebėjimo šakomis, naudodami branch.<branch_name>.merge konfiguracijos parametras. Šis parametras nėra būtinas darbui (galbūt, išskyrus git pull ), todėl jis gali nebūti.

(atnaujintas su pavyzdžiu ir naudinga informacija iš komentarų)

178
28 окт. atsakymas yra ne daugiau kaip 28 mėn. 2010-10-28 11:27 '10, 11:27, 2010-10-28 11:27

Kiti klausimai apie „ tags“ arba „ Ask a question“