Git stvara granu na udaljenom poslužitelju. Kako dodati prazan direktorij u repozitorij? Poništi sve promjene osim onih koje su već dodane planiranom uvrštavanju

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Ako koristite provjeru autentičnosti lozinkom:

  1. $ git klon https://username:password@gitsrv/opt/git/repository.git

Rad s granama

Prikaži sve grane:
  1. grana $git
Napravi novu granu:
  1. grana $git
Idi na novu temu:
  1. $git naplata
Napravite novu granu i prijeđite na nju:
  1. $ git odjava -b
Brisanje lokalne podružnice:
  1. $ git grana -d
Brisanje grane iz udaljenog repozitorija:
  1. $ git push origin --delete

Rad s obvezama

Kako ukloniti zadnji commit?

  1. $ git reset --soft HEAD^
Git Kako. Poglavlje 16. Poništavanje obveza
Git Kako. Poglavlje 17. Uklanjanje obveza iz grane
Službena Git dokumentacija. Osnove Gita - Vraćanje promjena

Kako promijeniti zadnji commit?

  1. $ git add new_file.txt
  2. $ git commit --izmijeni

Kako promijeniti komentar na zadnji commit?

  1. $ git commit --izmijeni
  2. $ git commit --izmijeni -m "Novi komentar"

Kako spojiti više obveza?

  1. $ git rebase -i GLAVA~3
Umjesto HEAD~3, možete koristiti hash commit-a. Morate proslijediti hash komitiranja u koje želite sve spojiti (izravnati).
Otvorit će se uređivač s popisom obveza, s najstarijim obvezama na vrhu.
  1. odaberite 1111111 Objavite 1 komentar
  2. odaberite 2222222 Objavite 2 komentara
  3. odaberite 3333333 Objavite 3 komentara
Pijuk morate zamijeniti tikvom kako bi izgledalo ovako:
  1. odaberite 1111111 Objavite 1 komentar
  2. squash 2222222 Objavi 2 komentara
  3. squash 3333333 Objavi 3 komentara
Zatim morate spremiti datoteku i izaći. Opet će biti otvoren uređivač teksta sa svim komentarima predaje. Morate urediti, spremiti i izaći. Nakon ovih koraka, predaje će se spojiti.

Kako mogu poništiti promjene na određenoj datoteci i vratiti je u stanje u kojem je bila nakon zadnjeg urezivanja?

  1. $ git odjava -- datoteka.txt

Kako poništiti sve neizvršene (nepodvrgnute) promjene?

  1. $git naplata

Kako zadržati neke datoteke za sljedeći commit?

Recimo da želite izvršiti izmjene u nekim datotekama, i upisati promjene u drugim datotekama u sljedećem predanju. Zatim ih možete privremeno ukloniti iz repozitorija (datoteke bez faze), a zatim ih ponovno dodati.
  1. $ git reset HEAD file.txt
Ova naredba će ukloniti datoteku iz repozitorija; ona će ostati u starim komitima. Head pokazuje na posljednje uvrštavanje u trenutnoj grani.

Ako ne možete gurnuti u udaljeno spremište jer je trenutna verzija spremišta manja od one na udaljenom spremištu

U ovom slučaju možete napraviti prisilno guranje.
  1. $ git push -f izvorni master

Spajanje grana

Kako uzeti samo neke datoteke iz druge grane?

  1. $ git checkout naziv grane -- put/do/datoteke.datoteke

Udaljena spremišta

Prikaz informacija o udaljenom spremištu

  1. $ git udaljeni prikaz porijekla
Na ekranu će se prikazati nešto poput ovoga:
  1. *daleko porijeklo
  2. Dohvaćanje URL-a: git@gitsrv:/opt/git/test-project.git
  3. Push URL: git@gitsrv:/opt/git/test-project.git
  4. GLAVA grane: majstor
  5. Udaljena grana:
  6. glavno novo (sljedeće dohvaćanje će biti pohranjeno u daljinski/podrijetlo)
  7. Lokalna referenca konfigurirana za "git push":
  8. master gura na master (lokalno zastarjelo)

Dodavanje udaljenog repozitorija

  1. $ git udaljeno dodavanje izvora git@gitsrv:/opt/git/test-project.git

Udaljene grane su reference na stanje grana u vašim udaljenim spremištima. To su lokalni ogranci koji se ne mogu pomicati; automatski se pomiču kad god komunicirate preko mreže. Udaljeni ogranci djeluju kao knjižne oznake koje vas podsjećaju gdje su ogranci u udaljenim repozitorijima bili posljednji put kada ste se s njima povezali.

Koristimo glavnu granu kao izvor grane, ona sadrži Najnovija verzija. Kako bismo odmah započeli, prelazimo na poslovnicu, aktivirajući granu "Blagajna". Stranica Podružnice prikazuje lokalnu podružnicu. Podebljani font i ispis na vrhu prozora pokazuju da su naše datoteke na istoj razini.

Dodavanje udaljenog repozitorija

Sada možemo integrirati novu značajku. Stoga biste u odjeljku "Nepraćene datoteke" trebali provjeriti postoje li datoteke povezane s projektom. Pojavit će se poruka s važnom napomenom u kojoj stoji da se promjene spremaju samo lokalno i da se i dalje moraju poslati na poslužitelj. Sada je vrijeme da novu značajku isporučite ostatku tima. Naš lokalni ogranak bi trebao biti objavljen. Na stranici Grane desnom tipkom miša kliknite neobjavljenu nit da biste odabrali objavi iz kontekstnog izbornika.

Izgledaju kao (naziv udaljenog predstavništva)/(podružnica) . Na primjer, ako želite vidjeti kako je glavna grana izgledala na izvornom poslužitelju zadnji put kada ste se na njega spojili, provjerite izvornu/glavnu granu. Ako ste vi i partner radili na istom problemu i on je objavio iss53 granu, možete imati svoju lokalnu iss53 granu; ali će ta grana na poslužitelju ukazivati ​​na commit u origin/iss53.

Kako riješiti sukobe spajanja?

Tijekom pregleda koda nova značajka mora biti posvećen glavnoj grani. Prvo se odabiru izvorna i ciljna grana. Zahtjev se sada može kreirati. Grupa odabrana kao revizori je obaviještena i sada može vidjeti zahtjev za prijenos. Komentari se mogu zamijeniti za zahtjev za povlačenjem. Svaki ispitivač može glasovati: odobreno, odobreno s napomenama, odbijeno itd. Osobito je važna činjenica da nema sukoba spajanja. Ako podnesene izmjene nisu kompatibilne sa statusom prihvaćenosti zajednice, podnositelj zahtjeva za prijenos mora ponovno napisati svoje izmjene.

Sve ovo može biti zbunjujuće, pa pogledajmo primjer. Recimo da imate vlastiti Git poslužitelj na svojoj mreži na git.ourcompany.com. Ako klonirate nešto iz njega, Git će to automatski nazvati origin , uzeti sve podatke odatle, stvoriti pokazivač na ono na što pokazuje glavna grana i to lokalno nazvati origin/master (ali ne možete ga premjestiti). Git će vam također dati vašu vlastitu glavnu granu, koja će započeti na istom mjestu kao i matična grana izvora, tako da imate s čime raditi (pogledajte sliku 3-22).

U klasičnim središnjim sustavima kontrole verzija, ovaj posao ide recenzentu. Nakon pregleda, revizor može izvršiti spajanje izravno u pregledniku. Tako je integrirana novorazvijena funkcija. Lokalno spremište još ne poznaje spajanje u središnjem repozitoriju. Osim toga, možda postoje dodatna obveza koja također želimo pogurati.

Datoteke nisu promijenjene. Popis ovih obveza za glavnu granu sada je potpun. Ovdje ćete možda prvo trebati izvući poteznicu najnovije promjene. Tek tada se predaje mogu gurnuti. Izvanredna tipka za sinkronizaciju je push and pull u jednom. Preuzima sve promjene s poslužitelja i šalje vlastitu poruku.

Slika 3-22. Kloniranje Git projekta daje vam vlastitu glavnu granu i origin/master koji ukazuje na glavnu granu u izvoru.

Ako učinite nešto na svojoj lokalnoj glavnoj grani, a u međuvremenu netko drugi unese promjene na git.ourcompany.com i tamo ažurira glavnu granu, vaše priče će se nastaviti drugačije. Također, dok ne kontaktirate izvorni poslužitelj, vaš izvorni/glavni pokazivač se neće pomaknuti (pogledajte sliku 3-23).

Na kraju, stanje vodeće grane sada prelazi u stabilnu granu. Da biste to učinili, izvodi se spajanje. Novo izdanje sada se može povući iz stabilnog stanja grane. Ne trebate se prijavljivati ​​i ne morate se nigdje registrirati. U nekom trenutku će vam trebati kada budete radili na više projekata.

Da biste to učinili, odaberite "alati → opcije". U sljedećem dijaloškom okviru unesite željeno ime i adresu E-mail, koji želite koristiti za kontrolu verzija. Ove informacije pohranjuju se samo lokalno i ne koriste se nigdje na internetu.



Slika 3-23. Kada obavljate lokalni posao i netko gura promjene na udaljeni poslužitelj, svaka se priča nastavlja drugačije.

Da bi vaš rad bio sinkroniziran, pokrenite naredbu git fetch origin. Ova naredba traži kojem poslužitelju podrijetlo odgovara (u našem slučaju to je git.ourcompany.com); izvlači sve podatke koje već nemate i ažurira vašu lokalnu pohranu podataka; pomiče izvorni/glavni pokazivač na novu poziciju (vidi sliku 3-24).

I stvorite točno jedno takvo spremište sada klikom na "dodaj". Sada pretpostavljamo da ste već započeli svoj magistarski rad i smjestili ga u imenik pod nazivom "Masterarbeit". Navedite nazive repozitorija, koji moraju odgovarati nazivu postojećeg direktorija, i opis gdje se direktorij nalazi.

Kako dodati prazan direktorij u repozitorij?

Sada ćete vidjeti sve datoteke u svom direktoriju u prikazu koji će vam pokazati sve promjene koje još nisu sinkronizirane. Točnije, sada gledate koje datoteke želite imati verzionirane. Možete izuzeti vrste datoteka kako biste izbjegli uklanjanje oznaka nepotrebne datoteke, koje ne želite u spremištu, svaki put. Odaberite "alati → postavke".


Slika 3-24. Naredba git fetch ažurira vaše udaljene reference.

Da pokažemo kako bi udaljene grane izgledale u situaciji s više udaljenih poslužitelja, pretpostavimo da imate još jedan interni Git poslužitelj koji za razvoj koristi samo jedan od vaših razvojnih timova. Ovaj poslužitelj se nalazi na git.team1.ourcompany.com. Možete ga dodati kao novu udaljenu vezu na projekt na kojem trenutno radite pomoću naredbe git remote add na isti način kao što je opisano u poglavlju 2. Imenujte ovaj udaljeni poslužitelj teamone , što je skraćenica za puni URL (pogledajte sliku .3-25).

Nastavite raditi i unosite promjene

Trebali biste ih dodati u svoje spremište. Kako biste bili sigurni da ovo ne morate konfigurirati svaki put, učinite popis globalno poznatim. Sada odaberite "alati → otvorite ljusku ovdje". U prozoru koji se otvori naredbeni redak unesite sljedeću naredbu. Ako želite, možete uključiti i više Detaljan opis u polju "Prošireni opis". Dodali ste dodatne dijelove, postoje neke grafičke datoteke ili neki neobrađeni podaci i bilješke čije biste verzije željeli imati.



Slika 3-25. Dodavanje dodatnog udaljenog poslužitelja.

Sada možete pokrenuti git fetch teamone da dohvatite sve što je na poslužitelju, a ne na vašem. Budući da je u ovaj trenutak ovaj poslužitelj ima samo djelić podataka koje ima izvorni poslužitelj, Git ne dohvaća nikakve podatke, već gura udaljenu granu pod nazivom teamone/master , koja ukazuje na isto predanje kao i glavna grana na teamone poslužitelju (pogledajte sliku 3 -26).

Ako ne možete gurnuti u udaljeno spremište jer je trenutna verzija spremišta manja od one na udaljenom spremištu

Klikom na naziv datoteke ili kvačicu lijevo od njega, možete odabrati ili poništiti odabir tog predanja. Ili želite predati određene promjene u predaju, ili ne želite koristiti određene datoteke. Sada vidite sve prethodne obveze zajedno s njima kratki opisi, i zato su toliko važni.

Kada odaberete s ovog popisa, možete vidjeti točno što se promijenilo. Ovo stvara novu predaju koja poništava vašu najnovije akcije. Ako želite ići u daljnje stanje predaje, odaberite "povratak na ovu predaju" s odgovarajućim predajom. Ovo će promijeniti vaše datoteke u direktoriju, stoga svakako premjestite sve u spremište prije nego što vam zatreba!



Slika 3-26. Sada imate lokalnu vezu na glavnu granu na teamone.

Slanje izmjena

Ako imate serverfix granu na kojoj želite raditi s nekim drugim, možete je gurati na isti način na koji ste poslali svoju prvu granu. Izvršite git push (udaljeni poslužitelj) (grana):

Zatim trebate "račvati" ono što se u žargonu verzija naziva "grana". Sve je u redu jer Geet kasnije pomaže ponovno ujediniti ogranke. Ovaj dijaloški okvir je mjesto gdje kontrolirate spajanje grana. Ako ste promijenili nešto u različitim granama na istim mjestima, na istim linijama, naravno da postoji sukob u spajanju. Morate to sami popraviti.

Međutim, u ovom pogledu možete vidjeti nered, ali ga ne popravljate. Izmijenite relevantne odjeljke kako bi odgovarali vašim potrebama. Uklonite crte za označavanje. Zatim se možete ponovno obvezati i navesti "Ručno spajanje" kao odgovarajući komentar.

$ git push origin serverfix Brojanje objekata: 20, gotovo. Sažimanje objekata: 100% (14/14), gotovo. Objekti za pisanje: 100% (15/15), 1,74 KiB, gotovo. Ukupno 15 (delta 5), ​​ponovno korišteno 0 (delta 0) Za [e-mail zaštićen]:schacon/simplegit.git * serverfix -> serverfix

To je na neki način stenografija. Git automatski proširuje naziv serverfix grane u refs/heads/serverfix:refs/heads/serverfix, što znači "uzmi moju lokalnu serverfix granu i ažuriraj udaljenu serverfix granu iz nje." Detaljno ćemo raspravljati o dijelu refs/heads/ u 9. poglavlju, ali on se obično može izostaviti. Također možete napraviti git push origin serverfix:serverfix - dogodit će se ista stvar - piše "uzmi moj serverfix i napravi ga udaljenim serverfixom". Ovaj format možete koristiti za guranje lokalnog ogranka u udaljeni ogranak s drugim imenom. Ako ne želite da se grana zove serverfix na udaljenom poslužitelju, tada umjesto prethodne naredbe pokrenite git push origin serverfix:awesomebranch . Ovo će poslati vašu lokalnu granu serverfix u granu awesomebranch udaljenog projekta.

Zamislimo jednostavan primjer grananja i spajanja s tijek rada koji se može prikazati u stvarnosti. Zamislite sebe kako slijedite ove korake.

  • Radite na web stranici.
  • Stvorite granu za nova tema na kojima želite raditi.
  • Nešto radite na ovoj temi.
U ovom trenutku ćete dobiti poruku da kritički rješavate problem. I slijedit ćete ove korake.

Osnovni postupci grananja

Zamislite da radite na projektu i već imate nekoliko potvrda. Snimite jednostavne i kratke potvrde. Odlučili ste raditi na problemu #53 u sustavu koji vaša tvrtka koristi za praćenje problema. Budući da je problem #53 specifičan i pravovremen problem na kojem ćete raditi, za njega kreirate novu granu. Slika 3-11 prikazuje rezultat.

$ git fetch origin remote: Brojanje objekata: 20, gotovo. daljinski: Sažimanje objekata: 100% (14/14), gotovo. daljinski: Ukupno 15 (delta 5), ​​ponovno korišteno 0 (delta 0) Raspakiranje objekata: 100% (15/15), gotovo. Iz [e-mail zaštićen]:schacon/simplegit * serverfix -> origin/serverfix

Važno je napomenuti da kada imate nove udaljene grane kada dohvaćate, ne dobivate automatski lokalne kopije koje je moguće uređivati ​​za njih. Drugim riječima, u našem slučaju nećete dobiti novu serverfix granu - samo origin/serverfix pointer, koji ne možete promijeniti.

Napravite pokazivač na novu granu. Radite na web stranici i potvrđujete promjene. Tada ćete primiti poziv koji vas obavještava o još jednom hitnom problemu s web-mjestom. Problem koji morate odmah riješiti. Najbolje je uvijek imati čiste i čiste radne uvjete prije skakanja između grana. A za to imamo neke postupke koje ćemo vidjeti kasnije.

Za sada, pošto smo potvrdili sve promjene, možemo bez problema prijeći na master granu. Nakon ovoga ćete imati radna mapa baš kao što je bilo prije nego što ste počeli raditi na problemu. # I možete se usredotočiti na novi gorući problem. Da budete sigurni da je vaša radna kopija potpuno ista kao grana u zadnjem urezivanju vaših promjena. Povratak na trenutni problem. Stvorit ćemo novu granu hitnih popravka na kojoj ćemo raditi do rješenja.

Za spajanje ovih razvoja u vašu trenutnu radnu granu, pokrenite git merge origin/serverfix. Ako želite da vaša vlastita serverfix grana radi, možete izgraditi iz udaljene grane:

$ git checkout -b serverfix origin/serverfix Branch serverfix postavljen za praćenje udaljenih grana refs/remotes/origin/serverfix. Prebačeno na novu granu "serverfix"

Ovo će vam dati lokalnu granu na kojoj možete raditi. Počet će tamo gdje je origin/serverfix.

Brisanje ogranaka na udaljenom poslužitelju

Slika 3 je grana zakrpe temeljena na originalnoj glavnoj grani. Možete pokrenuti testove, provjeriti je li rješenje ispravno i gurnuti promjene u glavnu granu kako bi postale aktivne. To je ono što se zove "fast forward". Sada su napravljene promjene već u snimci izvršenja koju je označila glavna grana. I možete ih proširiti.

Nakon spajanja, glavna grana pokazuje na isto mjesto kao i patch grana. Rješavanjem neposrednog problema koji je prekinuo vaš rad, možete se vratiti tamo gdje ste bili. Ali prvo je zanimljivo obrisati granu hitnog popravka. Jer ovo nam više neće trebati budući da pokazuje na istu stranicu kao i glavna grana.

Praćenje podružnica

Odjava lokalne podružnice pomoću git checkout iz udaljene podružnice automatski stvara nešto što se zove praćena grana. Praćene podružnice su lokalne podružnice koje su izravno povezane s udaljenom podružnicom. Ako upišete git push dok ste na praćenoj grani, Git će već znati na koji poslužitelj i granu poslati promjene. Slično, pokretanje git pull-a na jednoj od ovih grana prvo će dohvatiti sve udaljene reference, a zatim se automatski spojiti u odgovarajuću udaljenu granu.

Osnovni postupci taljenja

I s tim ste spremni vratiti se radu na problemu #53. Pretpostavimo da je vaš rad na problemu #53 sada završen i spreman za spajanje u glavnu granu. Ovo se malo razlikuje od prethodno izvedenog spajanja hitnih popravka. U ovom slučaju, razvojni zapis se razlikovao u ranijoj točki.

Veliki sukobi koji mogu nastati tijekom spajanja

Na ovaj proces gledamo kao na "potvrđeno spajanje". A razlikuje se po tome što ima više od jednog oca. Vrijedi napomenuti činjenicu da je Git taj koji automatski određuje najboljeg zajedničkog pretka za spajanje. I ručno zatvorite problem u alatu za praćenje problema vaše tvrtke. U nekim slučajevima procesi spajanja obično nisu fluidni. Na primjer, ako ste u problemu #53 promijenili isti dio koji je također promijenjen u problemu zakrpe.

Prilikom kloniranja repozitorija, obično će automatski stvoriti glavnu granu koja prati origin/master , tako da git push i git pull rade za tu granu izvan okvira i ne zahtijevaju nikakve dodatne argumente. Međutim, možete konfigurirati praćenje drugih grana udaljenog repozitorija. Jednostavan primjer kako to učiniti, upravo ste vidjeli - git checkout -b [branch] [delete. poslužitelj]/[ogranak] . Ako koristite Git verzije 1.6.2 ili noviji, također možete koristiti prečac --track:

Možete dobiti sukob spajanja na. Umjesto toga, on se zaustavlja u tom procesu, čekajući da se sukob riješi. Sve što je kontradiktorno i ne može se razriješiti označeno je kao "ne spajanje". Knjižne oznake koje će vam pomoći kada ručno otvarate datoteke i uređujete ih kako biste ih popravili.

Poništi sve promjene osim onih koje su već dodane planiranom uvrštavanju

Datoteka sukoba sadržavat će. Da biste riješili sukob, morate ručno odabrati sadržaj s jedne ili s druge strane. Na primjer, možete promijeniti blok, ostavljajući ga ovako tako da. Ovaj ispravak sadrži pomalo oba dijela. Ovo će pokrenuti odgovarajući alat za renderiranje i omogućiti vam rješavanje sukoba s njim. Ako želite koristiti alat koji nije zadani, možete ga odabrati s popisa podržanih alata prikazanog na početku. Unesite naziv za alat.

$ git checkout --track origin/serverfix Branch serverfix postavljen za praćenje udaljenih grana refs/remotes/origin/serverfix. Prebačeno na novu granu "serverfix"

Kako biste postavili lokalnu podružnicu s nazivom koji se razlikuje od naziva udaljene podružnice, možete jednostavno koristiti prvu verziju s drugim nazivom lokalne podružnice:

$ git checkout -b sf origin/serverfix Grana sf postavljena za praćenje udaljenih grana refs/remotes/origin/serverfix. Prebačeno na novu granu "sf"

Sada će vaš lokalni sf ogranak automatski gurati i povlačiti promjene iz origin/serverfix-a.

Brisanje ogranaka na udaljenom poslužitelju

Recimo da ste vi i vaši koautori završili značajku i spojili je u glavnu granu na udaljenom poslužitelju (ili neku drugu granu gdje je pohranjen stabilni kod). Možete obrisati granu na udaljenom poslužitelju koristeći pomalo tupu sintaksu git push [delete. poslužitelj] :[grana] . Da biste uklonili granu serverfix na poslužitelju, učinite sljedeće:

$ git push origin:serverfix To [e-mail zaštićen]:schacon/simplegit.git - popravak servera

Pljesnuti. Na vašem poslužitelju više nema podružnice. Možda biste željeli označiti trenutnu stranicu jer će vam trebati ova naredba i vjerojatno ćete zaboraviti sintaksu. Možete zapamtiti ovu naredbu vraćanjem na sintaksu git push [delete. poslužitelj] [lokalni. nit]:[izbrisano grana], koju smo pogledali malo ranije. Izostavljanje dijela [loc. thread] , vi u biti kažete „uzmite ništa u mom spremištu i učinite to tako da u [izbrisano. grana] bilo je isto.”



reci prijateljima
Pročitajte također