Jei norite sužinoti daugiau apie „git“ dalis, apie kurias anksčiau bijojote paklausti, tada šis sąrašas skirtas jums. Čia yra surinktos tipiškiausios situacijos ir būdai, kaip jas abi išspręsti asmeninė patirtis autorius ir surinktas visame internete.
Įvykdžius komentarą įvyko klaida
Jei įsipareigojimas dar nebuvo išsiųstas į serverį („push“), galite naudoti paprastą komandą, leidžiančią redaguoti pranešimo tekstą iki paskutinio įsipareigojimo.
git įsipareigoti - pakeisti
Kaip atšaukti paskutinį įsipareigojimą?
Galite naudoti „git“ atstatymą taip:
„git“ atstatymas - kieta GALVA ~ 1
HEAD ~ 1 reiškia vieną įsipareigojimą prieš HEAD, t.y. į dabartinę padėtį. Verta paminėti, kad tai yra „branduolinis“ metodas, kuris panaikins visus pokyčius. Jei jums reikia išsaugoti viską, ką padarėte, bet dar nespėjote įsipareigoti, naudokite:
„git“ atstatymas - minkšta GALVA ~ 1
Ištrinti šaką serveryje
„git push origin“ - ištrinti filialo pavadinimą
Kuo skiriasi „git pull“ ir „git fetch“?
git traukti iš esmės yra „git“ gavimas, po kurio iškart seka „git“ susijungimas. „git fetch“ atneša pakeitimus iš serverio ir saugo juos nuorodose / pulteliuose /. Tai jokiu būdu neturi įtakos vietiniams filialams ir dabartiniams pokyčiams. Ir git pull jau visus šiuos pokyčius išstumia į vietinę kopiją.
Kaip anuliuoti „git add“ prieš įsipareigojant?
„Git add“ failo pavadinimą paleidote netyčia ir norite anuliuoti šio failo pridėjimą. Jei įsipareigojimas dar nebuvo padarytas, tai padės:
iš naujo nustatyti failo pavadinimą
Kaip išspręsti susijungimo konfliktus?
Naudokite „git mergetool“, kuris suteikia patogią sąsają konfliktams išspręsti.
Pašalinkite visus vietinius failus ir katalogus, kurių „git“ nestebi, iš dabartinės kopijos
Atsargiai! Geriau pasidarykite atsarginę kopiją prieš tai atlikdami.
Klonuokite visas šakas iš serverio
Tikėtina, kad tai jau padarėte, o šakos tiesiog paslėptos. Štai komanda jiems visiems parodyti:
Norėdami peržiūrėti norimą šaką, galite naudoti „git checkout“ kilmę / filialo pavadinimą. Arba git checkout -b šakos_pavadinimas kilmė / šakos_vardas, kad sukurtumėte vietinį filialą, atitinkantį nuotolinį.
Pervardykite vietinį skyrių
git filialas -m senavardis vardas
Grįžkite prie bet kokio įsipareigojimo
Galite naudoti atstatymą, kaip parodyta anksčiau, tačiau tai reikš, kad norite visam laikui grįžti į būseną, kurioje buvote, o ne tik į tai žiūrėti (jums reikia atsiskaityti). Įsipareigojimo ID turi būti toks pat, koks rodomas komandos „git log“ išvestyje.
„git reset“ - sunkus įsipareigojimo_ID
Vėlgi, tai panaikins visus dabartinius pakeitimus, todėl įsitikinkite, kad tai yra tai, ko iš tikrųjų norite. Arba naudokite --soft vietoj --hard.
Pašalinkite submodulį
Submodulių kūrimas naudojamas retai, tačiau kartais jų vis tiek reikia. Taigi štai ko jums reikia:
git submodule deinit submodulename
git rm submodulename
git rm - talpyklos submodulinis vardas
rm -rf .git / modules / submodulename
Perrašyti vietinius failus „git“ traukimo metu
„Git“ nustatymas iš naujo padės jums dar kartą:
git fetch - visi
„git reset“ - sunki kilmė / pagrindinis
Kaip pridėti tuščią katalogą į saugyklą?
Negali būti! Tai paprasčiausiai nepalaikoma ir laikoma nereikalinga jums. Tačiau yra vienas triukas. Norimame kataloge galite sukurti .gitignore failą su tokiu turiniu:
# Nepaisykite visko šiame kataloge
*
# Išskyrus patį failą.gitignore
! .gitignore
Šaltinių eksportavimas, panašus į „svn export“
Naudokitės tokiu „git“ archyvu:
„git“ archyvas --format zip --output /path/to/file/file.zip master
Anuliuokite visus pakeitimus, išskyrus tuos, kurie jau pridėti prie planuoto įsipareigojimo
git kasa -.
Sukurkite naują filialą serveryje iš dabartinio vietinio filialo
„git config“ - „global push“. numatytoji srovė
git stumti -u
Atkurti ištrintą failą
Pirmiausia turite rasti paskutinį įsipareigojimą ten, kur failas vis dar egzistavo.
Nuotoliniai filialai yra nuorodos į jūsų nuotolinių saugyklų filialų būseną. Tai yra vietiniai filialai ir jų negalima perkelti; jie juda automatiškai, kai bendraujate tinklu. Nuotoliniai filialai veikia kaip žymės, kad primintų, kur nuotolinių saugyklų šakos buvo paskutinį kartą, kai prie jų prisijungėte.
Jie atrodo kaip (nuotolinio atpirkimo pavadinimas) / (filialas). Pavyzdžiui, jei norite pamatyti, kaip pagrindinis serveris atrodė kilmės serveryje, kai paskutinį kartą prisijungėte prie jo, patikrinkite kilmės / pagrindinį šaką. Jei jūs ir partneris dirbote su ta pačia problema ir jie įkėlė „iss53“ filialą, galite turėti savo vietinį „iss53“ filialą; bet tas filialas serveryje nurodys įsipareigojimą orig / iss53.
Visa tai tikriausiai glumina, todėl pažvelkime į pavyzdį. Tarkime, kad turite savo „Git“ serverį internete adresu git.ourcompany.com. Jei klonuosite ką nors iš jo, „Git“ automatiškai pavadins jo kilmę, paims iš ten visus duomenis, sukurs rodyklę į tai, į ką nurodo pagrindinis filialas, ir pavadinsite ją vietine kilme / magistru (bet jūs negalite jos perkelti) ... „Git“ taip pat padarys jus apie savo pagrindinę šaką, kuri prasideda toje pačioje vietoje kaip ir pradinė šakos šakutė, taigi jūs turite su kuo dirbti (žr. 3-22 pav.).
3-22 pav. „Git“ projekto klonavimas suteikia jums savo pagrindinę šaką ir kilmę / meistrą, nukreipiantį į pagrindinę šaką iš pradžių.
Jei ką nors darote savo pagrindiniame filiale ir tuo tarpu kažkas kitas perkelia git.ourcompany.com pakeitimus ir atnaujina pagrindinį filialą, jūsų istorijos tęsis kitaip. Be to, kol neprisijungsite prie kilmės serverio, jūsų kilmės / pagrindinis rodyklė nejudės (žr. 3-23 pav.).
3-23 pav. Kai dirbate vietinį darbą ir kažkas perkelia į nuotolinį serverį, kiekviena istorija tęsiasi skirtingai.
Norėdami sinchronizuoti savo darbą, paleiskite komandą „git fetch origin“. Ši komanda ieško, kuri serverio kilmė atitinka (mūsų atveju git.ourcompany.com); iš ten gauna visus duomenis, kurių dar neturite, ir atnaujina savo vietinę duomenų saugyklą; perkelia pradžios / pagrindinį rodyklę į naują vietą (žr. 3-24 pav.).
3-24 pav. „Git fetch“ komanda atnaujins jūsų nuotolines nuorodas.
Pademonstruoti, kaip jie atrodys atokios šakos tarkime, kad turite kelis nuotolinius serverius, tarkime, kad turite kitą vidinį „Git“ serverį, kurį kūrimui naudoja tik viena iš jūsų kūrėjų komandų. Šis serveris yra git.team1.ourcompany.com. Galite pridėti jį kaip naują nuotolinę nuorodą į projektą, kurį šiuo metu dirbate, naudodami komandą „git remote add“, kaip aprašyta 2 skyriuje. Pavadinkite šį nuotolinio serverio komandą, kuri bus viso URL stenografas (žr. Pav.) . 3–25).
3-25 pav. Papildomo nuotolinio serverio pridėjimas.
Dabar galite paleisti „git fetch teamone“, kad gautumėte viską iš serverio, ko neturite. Kadangi šiuo serveriu šiuo metu yra tik duomenų, kurių kilmės šalis yra, pogrupis, „Git“ negauna jokių duomenų, bet išstumia nuotolinį filialą, pavadintą „teamone / master“, kuris nurodo tą patį įsipareigojimą kaip pagrindinis „teamone“ filialas ( žr. 3-26 pav.).
3-26 pav. Dabar turite vietinę nuorodą į „teamone“ pagrindinį filialą.
Pateikti pakeitimus
Jei turite serverio pataisų filialą, kurį norite dirbti su kuo nors kitu, galite jį stumti taip pat, kaip ir pirmąjį filialą. Paleisti „git push“ (nuotolinis serveris) (filialas):
$ git push origin serverfix Objektų skaičiavimas: 20, atlikta. Suspausti objektai: 100% (14/14), padaryta. Rašyti objektus: 100% (15/15), 1,74 KiB, atlikta. Iš viso 15 (delta 5), \u200b\u200bpakartotinai panaudota 0 (delta 0) [apsaugotas el. paštu]: schacon / simplegit.git * serverfix -\u003e serverfix
Tai savotiškas susitraukimas. „Git“ automatiškai išplečia serverio pataisos šakos pavadinimą į „refs / heads / serverfix: refs / heads / serverfix“, o tai reiškia „paimk mano vietinį serverio pataisos filialą ir atnaujink iš ten nuotolinį serverio pataisos filialą“. Refs / heads / part išsamiai aptarsime 9 skyriuje, tačiau jų paprastai galima praleisti. Taip pat galite paleisti „git push origin serverfix: serverfix“ - tas pats nutiks - sakoma „paimk mano serverio pataisą ir padaryk tai nuotolinę serverio pataisą“. Galite naudoti šį formatą norėdami perkelti vietinį filialą į nuotolinį filialą kitu vardu. Jei nenorite, kad nuotoliniame serveryje filialas būtų vadinamas serverfix, tada vietoj ankstesnės komandos vykdykite „git push origin serverfix: awesomebranch“. Tai nustums jūsų vietinį serverio pataisų filialą į nuotolinio projekto awesomebranch filialą.
Nuotolinis „$ git“ paieškos šaltinis: objektų skaičiavimas: 20, atlikta. nuotolinis: objektų suspaudimas: 100% (14/14), padaryta. nuotolinis: Iš viso 15 (delta 5), \u200b\u200bpakartotinai panaudotas 0 (delta 0) Išpakuoti objektai: 100% (15/15), padaryta. Nuo [apsaugotas el. paštu]: schacon / simplegit * serverfix -\u003e origin / serverfix
Svarbu pažymėti, kad gavę duomenis turite naujų nuotolinių filialų, automatiškai negaunate jiems vietinių redaguojamų kopijų. Kitaip tariant, mūsų atveju jūs negausite naujo serverfix filialo - tik pradžios / serverfix žymeklio, kurio negalėsite pakeisti.
Norėdami sujungti šį darbą su dabartine darbo šaka, paleiskite „git merge origin / serverfix“. Jei jums reikia savo serverio pataisų filialo, kuriame galėtumėte dirbti, galite jį sukurti pagal nuotolinį filialą:
$ git checkout -b serverfix origin / serverfix Filialo serverio pataisymas sukurtas stebėti nuotolinio filialo nuorodas / nuotolinio valdymo pultus / kilmės / serverio pataisas. Perjungta į naują filialo „serverfix“
Tai suteiks jums vietos filialą, kuriame galėsite dirbti. Jis prasidės ten, kur yra kilmė / serverio pataisymas.
Šakų sekimas
Patikrinus vietinį filialą su „git“ kasa iš nuotolinio filialo, automatiškai sukuriamas vadinamasis skyrius vikšrinė šaka... Stebimi filialai yra vietiniai filialai, tiesiogiai susieti su nuotoliniu filialu. Jei būdami stebimoje šakoje įvesite „git push“, „Git“ jau žinos, į kurį serverį ir filialą reikia pakeisti. Lygiai taip pat, paleidus „git“ traukimą vienoje iš šių šakų, pirmiausia gaunamos visos nuotolinės nuorodos, o tada automatiškai susilieja su atitinkamu nuotoliniu filialu.
Klonuojant saugyklą, paprastai automatiškai sukuriamas pagrindinis filialas, kuris seka kilmę / pagrindinį, todėl „git push“ ir „git pull“ darbai šiai šakai iš langelio ir nereikalauja papildomų argumentų. Tačiau galite nustatyti kitų filialų stebėjimą. nuotolinė saugykla... Jūs ką tik pamatėte paprastą pavyzdį, kaip tai padaryti - „git checkout“ -b [filialas] [ištrintas. serveris] / [filialas]. Jei naudojate „Git“ 1.6.2 ar naujesnę versiją, taip pat galite naudoti --track spartųjį klavišą:
$ git checkout --track origin / serverfix Filialo serverio pataisymas sukurtas stebėti nuotolinio filialo nuorodas / nuotolinio valdymo pultus / origin / serverfix. Perjungta į naują filialo „serverfix“
Norėdami nustatyti vietinį filialą kitu pavadinimu nei nuotolinis filialas, galite lengvai naudoti pirmąją versiją su kitu vietinio filialo pavadinimu:
$ git checkout -b sf origin / serverfix Filialas sf įsteigtas stebėti nuotolinio filialo nuorodas / nuotolinio valdymo pultus / origin / serverfix. Perėjo į naują filialą „sf“
Dabar jūsų vietinis sf filialas automatiškai stumia ir traukia pakeitimus iš kilmės / serverio pataisos.
Šakų pašalinimas nuotoliniame serveryje
Tarkime, jūs ir jūsų bendradarbiai baigėte diegti naujoves ir sujungėte ją į nuotolinio serverio pagrindinį filialą (arba kokį kitą filialą, kuriame saugomas stabilus kodas). Šaką galite stumti nuotoliniame serveryje naudodami šiek tiek nesąžiningą sintaksės git push [remote. serveris]: [filialas]. Norėdami pašalinti serverio pataisos šaką serveryje, atlikite šiuos veiksmus:
$ git push origin: serverfix To [apsaugotas el. paštu]: schacon / simplegit.git - serverfix
Ploti. Jūsų serveryje nebėra filialo. Galbūt norėsite pažymėti esamą puslapį, nes jums reikės šios komandos ir greičiausiai pamiršite sintaksę. Šią komandą galite prisiminti grįžę į sintaksę „git push“ [ištrinti. serveris] [lok. filialas]: [ištrinti. filialas], į kurį mes pažvelgėme šiek tiek anksčiau. Praleidžiant [lok. filialas], jūs iš esmės sakote „nieko neimk į mano saugyklą ir padaryk taip, kad [nuotol. filialas] buvo tas pats ".
Jei naudojate slaptažodžio autentifikavimą:
- $ git klonas https: // vartotojo vardas: [apsaugotas el. paštu]/opt/git/repository.git
Darbas su šakomis
Rodyti visus filialus: - $ git filialas
- $ git filialas
- $ git kasa
- $ git kasa -b
- $ git filialas -d
- $ git push origin - ištrinti
Darbas su įsipareigojimais
Kaip pašalinti paskutinį įsipareigojimą?
- $ git reset - soft HEAD ^
Git Kaip. 17 skyrius. Pašalinti įsipareigojimus iš filialo
Oficiali „Git“ dokumentacija. „Git“ pagrindai - pakeisti pokyčius
Kaip pakeisti paskutinį įsipareigojimą?
- $ git pridėti new_file.txt
- $ git įsipareigoti - pakeisti
Kaip pakeisti paskutinio įsipareigojimo komentarą?
- $ git įsipareigoti - pakeisti
- $ git įsipareigoti - pakeisti -m „Naujas komentaras“
Kaip sujungti kelis įsipareigojimus?
- $ git rebase -i GALVA ~ 3
Bus atidarytas redaktorius su įsipareigojimų sąrašu, o viršuje - seniausias įsipareigojimas.
- pasirinkti 1111111 Atlikite 1 komentarą
- pasirinkti 2222222 Įvykdykite 2 komentarą
- pasirinkti 3333333 Atlikite 3 komentarus
- pasirinkti 1111111 Atlikite 1 komentarą
- skvošas 2222222 Įveskite 2 komentarą
- skvošas 3333333 Įvykdykite 3 komentarus
Kaip anuliuoti konkretaus failo pakeitimus ir grąžinti jį į būseną, kurioje jis buvo po paskutinio įsipareigojimo?
- $ git patikra - file.txt
Kaip grąžinti visus neįpareigotus (neįpareigotus) pakeitimus?
- $ git kasa
Kaip laikyti keletą failų kitam įsipareigojimui?
Tarkime, kad norite atlikti pakeitimus kai kuriuose rinkmenose, o kitame faile - atlikti kitus įsipareigojimus. Tada galite juos laikinai pašalinti iš saugyklos („unstage“ failus) ir tada vėl pridėti.- $ git reset HEAD file.txt
Jei negalite perkelti į nuotolinę saugyklą dėl to, kad dabartinė saugyklos versija yra mažesnė nei nuotolinės saugyklos versija
Tokiu atveju galite priverstinai stumti.- $ git push -f kilmės meistras
Susiliejančios šakos
Kaip galiu paimti tik kai kuriuos failus iš kito filialo?
- $ git patikros šakos pavadinimas - kelias / į / file.file
Nuotolinės saugyklos
Informacijos apie nuotolinę saugyklą rodymas
- Nuotolinio šou „$ git“ kilmė
- * nuotolinė kilmė
- Gauti URL: [apsaugotas el. paštu]: /opt/git/test-project.git
- Push URL: [apsaugotas el. paštu]: /opt/git/test-project.git
- GALVA filialas: meistras
- Nuotolinis filialas:
- pagrindinis naujas (kitas atėmimas bus saugomas nuotolinio valdymo pultuose / kilmės vietoje)
- „Git push“ sukonfigūruotas vietinis nuoroda:
- meistras stumia į meistrą (vietinis pasenęs)
Nuotolinės saugyklos pridėjimas
- Nuotolinis „$ git“ pridėkite kilmę [apsaugotas el. paštu]: /opt/git/test-project.git