S procvatom tehnologije, postaje neizbježno da bilo koja IT osoba radi istovremeno na više podataka, a vaši se podaci s vremenom neprestano razvijaju. Također je bitno pratiti svaku promjenu podataka i biti spremni poništiti ili poništiti bilo koju neželjenu promjenu kada je to potrebno.
Moram priznati, verzija mojih podataka u Gitu omogućuje mi da budem eksperimentalniji u razvoju svog projekta. Ako zabrljam, znam da git uvijek može poništiti i / ili vratiti tu verziju mog projekta onakvom kakva je bila prije nego što sam zeznuo. Svaki sloj je dizajniran da omogući pregled i promjenu podataka i / ili ispravku promjena podataka prije premještanja podataka u sljedeću fazu. Dakle, slijede pogreške koje su obrađene na ovom blogu:
- Datoteke / direktoriji izvan stupnja iz Indexa
- Uredite zadnju uređenu poruku
- Zaboravio sam neke promjene u zadnjem urezivanju
- Odbacite lokalne promjene
- Predani osobni podaci lokalnom spremištu
- Zamijenio je najnovije urezivanje novim urezivanjem
- Upisali pogrešne podatke
- Vratite se u moje staro stanje projekta
- Obnovite izbrisanu lokalnu granu
- Poništi promjene izvršene u urezivanju
- Dao pogrešno ime mojoj podružnici
- Želite preurediti zapisnike povijesti prije nego što ih pritisnete na daljinski
- Učinili nepovezane promjene u jedan predati
- Promijenite e-adresu autora u svim obvezama na svim granama
- Izgubljene i pronađene datoteke
- Zaboravio sam u kojoj grani postoji moj commit-id
- Izbriši urezivanje iz povijesti
- Gurnuo pogrešnu granu na daljinski
Datoteke / direktoriji izvan stupnja iz Indexa
Tijekom dodavanja i / ili mijenjanja datoteka često koristite uobičajeno ponašanje naredbe 'git add', a to je dodavanje svih datoteka i direktorija u Indeks.Često osjećate potrebu za uklanjanjem pojedinih datoteka ili njihovom posljednjom izmjenom prije nego što ih napravite.
Sintaksa: git resetiranje
Poništavanje postavljanja datoteka iz područja indeksa daje vam još jednu priliku za ponovnu obradu podataka prije predavanja u lokalni repo.
Uredite zadnju uređenu poruku
Naredba: git commit --mend
Možete urediti najnoviju poruku urezivanja bez stvaranja nove. Da bih naveo dnevnike urezivanja, postavio sam nadimak 'hist':
Naredba: git config - globalni alias.hist 'log --pretty = format: '% C (žuti)% h% Creset% ad | % C (zeleno)% s% Creset% C (crveno)% d% Creset% C (plavo) [% an] '--graph --decorate --date = short'x
Nemojte mijenjati poruku urezivanja koja je već gurnuta u udaljeno spremište i podijeljena s drugima, jer bi to učinilo raniju povijest urezivanja nevaljanom i na taj način može utjecati na bilo koji rad temeljen na tome.
Zaboravio sam neke promjene u zadnjem urezivanju
Recimo da ste zaboravili izvršiti neke izmjene i već ste izvršili snimku, a također ne želite napraviti još jednu obvezu da biste istaknuli svoju pogrešku.
Naredba: git commit --mend
Istaknuo sam kako je ponovno stvoren i promijenjen id Sha-1 nedavnog objekta za predaju. Pretvarao sam se da sam napravio jedan objed kombinirajući obje promjene u jedno.
Odbacite lokalne promjene
Dakle, ovdje je slučaj kada sam modificirao datoteku ‘README’ i priredio je. Zatim sam istu datoteku po drugi put izmijenio, ali shvatio sam da ne želim drugu promjenu.
Sada, dopustite mi da ručno ne poništim cijelu promjenu, jednostavno mogu povući režiranu verziju datoteke.
Sintaksa:
git checkout -
–Lokalne promjene u datoteci
git checkout -
–Lokalne promjene u svim datotekama u direktorijumu & sramežljivo i sramežljivo
Naredba: git checkout - README
Dakle, odbacio sam svoje posljednje promjene u datoteci i prihvatio etapnu verziju datoteke. U sljedećem urezivanju, samo etažirana verzija datoteke ide u lokalno spremište.
Predani osobni podaci lokalnom spremištu
Želim ukloniti određene podatke iz lokalnog spremišta, ali datoteke zadržati u radnom direktoriju.
Sintaksa:
git reset --mixed HEAD ~
git reset - pomiješan
Naredba: git reset --mixed HEAD ~ 1
HEAD ~ 1 označava urezivanje neposredno prije nedavnog urezivanja koje pokazuje trenutna grana HEAD.
Datoteke u trenutnoj snimci uklonjene su i iz lokalnog spremišta i iz područja spremanja. Dodajte sljedeće uzorke u globalnu datoteku .gitignore da biste ih izuzeli iz git-a.
vim ~ / .gitignore_global
# datoteke lozinke #
*.proći
*.ključ
* .passwd
Ovim se uklanja urezivanje koje je imalo snimku datoteka lozinki i dobit ćete čisto mjesto za postavljanje. Moje datoteke su i dalje prisutne u mom radnom direktoriju, ali više nisu prisutne u lokalnom spremištu, a također neće biti gurane na udaljenom spremištu.
Oprez: Ako ih izgubite, git vam ih neće moći vratiti jer ne zna za to.
Zamijenite najnovije urezivanje novim urezivanjem
Sintaksa: git reset --soft [/ HEAD ~ n>]
Opcija ‘–soft’ samo uklanja uklonjene datoteke iz lokalnog spremišta dok su one još uvijek uprizorene u indeksu i možete ih ponovno urediti nakon pregleda. je sha-1 snimke koju želite ukloniti iz lokalnog repo-a. gdje je n broj predavanja prije predaje HEAD
Naredba :git reset --soft GLAVA ~ 1
Izmijenite datoteke i ponovno ih postavite
Naredba: git commit -m 'Dodavanje index.html i style.css'
Ispada da je vaša povijest urezivanja:
Upisali pogrešne podatke
Sintaksa:
git reset --hard HEAD ~ n
– Resetirajte projekt na ‘n’ obveze prije posljednje snimljene snimke
git reset --tvrd
– Resetirajte projekt na zadanu snimku id-a urezivanja
Naredba: git reset --hard HEAD ~ 1
Najnovije datoteke urezivanja i oštećenja uklanjaju se iz lokalnog spremišta, stupnjevačkog područja kao i iz radnog imenika.
Oprez: To je opasna naredba jer na kraju gubite datoteke u radnom direktoriju. Ne preporučuje se na udaljenom spremištu.
Vratite se u moje staro stanje projekta
Možete prijeći na starije stanje vašeg projekta u povijesti vremena. Ako zabrljate u najnovijoj verziji ili su vam potrebna poboljšanja u starijem kodu, možda ćete htjeti stvoriti drugu granu od te stare snimke projekta kako ne biste ometali vaš trenutni rad. Pogledajmo kako:
a. Navedite povijest projekta i odlučite za stariji id urezivanja, naredbu:ići hist
b. Iz ID-a urezivanja stvorite drugu granu:
git checkout -b stara država e7aa9a5
c. Nastavite raditi na kodu i kasnije spojite / prebazujte s 'glavnom' granom.
Obnovite izbrisanu lokalnu granu
Moguće je obnoviti izgubljeni rad na referentnoj grani. Recimo, izbrisao sam granu 'stari_kod' bez spajanja s glavnom grankom i izgubio sam rad. I ne, ni grana nisam gurnuo u udaljeno spremište, što onda? Pa git tragovi i vodi zapisnik svih promjena izvršenih na svakoj referenci, da vidimo moju:idi reflog
Dakle, HEAD @ {2} je pokazivač kada sam prešao na granu 'stari_kôd', vratimo to:
Sintaksa:git checkout -b
Naredba:git checkout -b stari_kod HEAD @ {2}
Morate biti sada u grani 'stari_kôd' sa svojim najnovijim djelom u vrijeme njegovog stvaranja. Uz to, pokazivač 'reflog' na HEAD @ {1} bio je nedavni predaj izvršen na grani 'stari_kôd'. Da biste vratili ovaj jedinstveni commit samo pokrenite naredbu kao:git reset --hard HEAD @ {1}.
Ovo također vraća modificirane datoteke u radni direktorij.
Ako želite detaljno znati kako ova naredba funkcionira i kako možete upravljati unosima 'reflog', možete pročitati i moj raniji post naoporavak izbrisane grane iz git reflog-a.
Poništi promjene izvršene u urezivanju
ićivratiti sekoristi se za bilježenje nekih novih obveza kako bi se preokrenuo učinak nekih ranijih izvršavanja.
Sintaksa: git revert
Iz svojih dnevnika obveza, želio bih poništiti promjenu učinjenu u istaknutom id-u predaje:
Naredba: git revert 827bc0d
Bolje je da ne resetirate dijeljene obveze na „teško“, već ih umjesto toga „git revert“ kako biste sačuvali povijest tako da svima bude lakše pronaći evidencije povijesti kako bi saznali što je tko vratio. i zašto?
Možete koristiti istu logiku upućivanja predavanja koja se tiču pokazivača HEAD umjesto davanja ID-a urezivanja, kao u HEAD ~ 3 ili HEAD ~ 4 i tako dalje.
Dao pogrešno ime mojoj podružnici
Možete preimenovati naziv lokalne podružnice. Puno se puta dogodi da biste možda željeli preimenovati svoju poslovnicu na temelju problema na kojem radite, a da ne prođete bol zbog migracije cijelog svog posla s jednog mjesta na drugo. Na primjer, možete biti na istoj grani ili na drugoj grani i dalje moći preimenovati željenu granu kao što je prikazano dolje:
Sintaksa: git grana -m
Naredba: git grana -m stari_kod stari_ # 4920
Kao što se možda pitate drži li git zapis ovog preimenovanja? Da, odnosi se na vaše unose ‘reflog’, evo mojih:
Preimenovanje grane neće utjecati na njezinu granu za daljinsko praćenje. Vidjet ćemo u udaljenom odjeljku kako zamijeniti granu na udaljenom spremištu
traka napretka u html-u pomoću javascripta
Preuredite zapisnike povijesti prije nego što ih gurnete na daljinski
Kako bih volio da sam neke obveze napravio ranije od drugih, a neke uopće ne bih. Interaktivno preuređujte i uređujte stare obveze kako biste učinkovito popravili ili poboljšali kôd
Sintaksa: git rebase -i
Naredba: git rebase -i fb0a90e
–Počnite s ponovnim postavljanjem obveza izvršenih nakon id-a urezivanja fb0a90e
Ponovno posjetite git rebase dokumentacija kako bi se razumjelo kako se '–interactive or -i' rebase razlikuje od uobičajene rebase.
Učinili nepovezane promjene u jedan predati
U ovom slučaju, trebate podijeliti stari zakopani urezivanje u više logičkih predavanja.
Sintaksa: git rebase -i
Naredba: git rebase -i fb0a90e
U uređivaču ponovne baze podataka morate odabrati e7aa9a5 id predavanja i promijeniti ga u 'uređivanje' umjesto u 'odabir'.
Sad biste bili u projektnoj verziji urezivanja id-e7aa9a5. Prvo vratite povijest urezivanja i područje postavljanja na prethodnu naredbu urezivanja:git reset HEAD ~ 1
Drugo, uređivanje + faza + uređivanje datoteka pojedinačno
Naredbe:
git dodaj kôd && git commit -m 'Dodavanje početnih kodova'
git add newcode && git commit -m 'Dodavanje novog koda'
Treće, nastavite s bazom podataka i završite.
Naredba :git rebase --nastaviti
Četvrto, pregledajte povijest s dodatnim obvezama.
Naredba: ići hist
Promijenite e-adresu autora u svim obvezama na svim granama
Odavno izrađujem verzije i urezujem svoje projektne datoteke u git, ali do sada me nikada nije pogodilo da je moj id e-pošte ugrožen u mojim dnevnicima povijesti urezivanja koji su čak objavljeni na udaljenim spremištima. Pa, to se može dogoditi bilo kome kad u početku postavite konfiguracije u datoteci '.gitconfig'. Na moje olakšanje git može prepisati varijable okoline koje pružamo prilikom stvaranja objekta urezivanja.
Prvo dobivam popis ID-ovi e-pošte da odlučim one koje želim promijeniti:
Naredba: git log --all --pretty = format: '% an% d'
–Ovo ispisuje ime autora (refname / ime grane)
Drugo, prolazim svaki predati na svakoj grani i ponovno napišite objekt urezivanja s novim ID-om e-pošte
Naredba:
git filter-grana --env-filter '
if ['$ GIT_AUTHOR_NAME' = 'divya']
zatim
GIT_AUTHOR_EMAIL = 'divya@github.com'
biti
' -- --svi
Izgubljene i pronađene datoteke
Pretpostavimo da ste izgubili određenu datoteku i ne sjećate se njenog naziva, ali biste se mogli prisjetiti određenih riječi u datoteci. U ovom slučaju možete slijediti ove korake-
Korak 1: Navedite sve obveze koje su ikad sadržavale snimku datoteke s pretraživanim uzorkom
Naredba :git rev-list - svi | xargs git grep -i 'vremenska oznaka'
Korak 2 : Stvorite novu granu 'izgubljeno-pronađeno' od ovog istaknutog id-a predavanja
Sintaksa: git checkout -b izgubljeno-pronađeno d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f
Zaboravio sam u kojoj grani postoji moj commit-id
Ponekad, nakon što otkrijete id pogreške u pogrešci, možda biste poželjeli znati sve grane koje imaju ovo urezivanje na sebi kako biste ih mogli sve popraviti. Provjera povijesti svake podružnice nije vrlo praktična u velikom projektu s više podružnica.
Loš predavanje izvršeno u mojoj aplikaciji za izgradnju navigacije jednom je razbilo kôd, tada sam koristio Naredba 'git bisect' za otkrivanje pogrešnog ID-a urezivanja nakon čega slijedinaredba:git grana --sadrži
da nabroj grane s tim lošim predavanjem.
Dakle, sada znam sve grane koje još uvijek imaju loše urezivanje, mogao bih vratiti ili resetirati ovaj skup promjena.
Izbriši urezivanje iz povijesti
Ponekad osjećam potrebu samo izbrisati obvezu iz povijesti i ne ostaviti joj trag. Ne bih vam preporučio da isprobate ovaj trik na zajedničkoj grani, već samo na lokalnoj grani.
Sintaksa: git rebase -i
Naredba :git rebase -i 93859d8
U uređivaču rebase-> zamijenite 'edit' s 'drop' za istaknuti id urezivanja: 69f4813
U nekim slučajevima ovo ponovno pisanje može rezultirati sukobima. Morate riješiti sukobe, a zatim nastaviti dalje.
Upozorenje : Ovo je opasna naredba jer ovo prepisuje povijest i može izgubiti podatke. Takva se grana razlikuje od svog udaljenog kolege i morat će se gurnuti s--sila
ili- prisila uz zakup
opcija.
Gurnuo pogrešnu granu na daljinski
Sada, evo što želim učiniti - želim izbrisati a udaljena grana i zaustaviti ga praćenje iz moje lokalne podružnice. 'git push
'Naredba kada se koristi s--izbrisati
opcija briše udaljenu granu Dakle, ovako dobivam lokalnu kopiju kloniranog projekta -
git klon https://github.com/greets/myProj.git
cd myProj
Jednom kada se udaljena grana izbriše, drugi na dijeljenom repou moraju osvježiti i ažurirati svoje udaljene reference pomoću--obrezati
mogućnost brisanja referenci na objekt koji nedostaje:git fetch --prune -v porijeklo
U ovom sam postu spomenuo neke od uobičajenih pogrešaka ili promjena koje vam git može pomoći u ispravljanju. Svaki je kod jedinstven i razvijen na svoj način, tako da postoje i različiti načini pristupanja i rješavanja problema. Uvijek biste se mogli pozvati na službenu osobu git dokumentacija da biste razumjeli kako razne git naredbe štite vaš izvorni kod i kako ih najbolje iskoristiti.
Sad kad ste shvatili uobičajene Git pogreške, pogledajte ovo Edureka, pouzdana tvrtka za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka DevOps certifikacijski tečaj pomaže učenicima da shvate što je DevOps i steknu stručnost u raznim DevOps procesima i alatima kao što su Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack i GIT za automatizaciju više koraka u SDLC-u.
Imate pitanje za nas? Molimo vas spomenite to u odjeljku za komentare ove 'uobičajene Git pogreške', a mi ćemo vam se javiti