Git за начинаещ ++

Вие знаете основите на работния процес на git и сте запознати с някои основни команди като добавяне, ангажиране, натискане, дърпане, тогава може би тази публикация е за вас. Тази публикация е фокусирана основно върху ежедневното подобряване на употребата на git, поправянето на някои често срещани грешки и стъпка към предварително обучаването на git.

„Снимка от очила отблизо“ от Кевин Ку на Unsplash

# Сценарий с добавяне

Просто искате да добавите файлове със специфично разширение във вашата сцена. Разбира се можете да добавите всички файлове един по един. Но можете да използвате *. , за да включите всички файлове с това разширение. Следващата команда ще добави всички python файлове.

git add * .py

Вие искате да добавите файлове със специфично разширение, а също така искате да посочите името на директория, след което можете да изпълните следната команда. Следващата команда ще добави всички python файлове от под директории на модели / директория.

git добавяне на модели / \ *. py

# Сценарий с чиста

Създадохте някои нови файлове или папки във вашия клон. След известно време разбрахте, че не искате тези файлове или папки. Имате нужда от работното ви дърво чисто. Това са непроследени файлове в git.

Непроследените файлове са тези, които не сте добавили вече, използвайки git add

За да направите работното си дърво чисто, можете да изпълните следната команда. Тази команда ще изтрие всички файлове и директории, които не се проследяват от git.

git clean -df

Ако искате да видите кои непроследени файлове ще бъдат премахнати, преди да ги премахнете, можете да стартирате тази команда.

git clean -dn

# Сценарий с rm

Сега искате да изтриете проследените си файлове. Можете да изтриете проследения си файл с помощта на тази команда.

git rm 

Ако вашият файл е в етап на поставяне, тогава трябва да дадете допълнителен флаг за сила.

git rm  -f

Вие искате да изтриете файлове от git хранилище, но не и от вашата файлова система, тогава можете да стартирате тази команда.

git rm - cached 

# Сценарий с клон

Направихте печатна грешка в името на вашия клон или искате да промените името на клона си, след това следната команда ще промени името на вашия клон.

git клон -m  

Искате да промените текущото име на клона, след което можете просто да изпълните следната команда.

git клон -m 

Ако вече сте избутали клона със старо име, тогава са необходими няколко допълнителни стъпки. Трябва да изтриете стария клон от дистанционното и да натиснете новия.

git push  - изтриване 
git push  

Искате да натиснете локалния си клон, но името на местния клон не съвпада с името на името на клона на отдалечено хранилище. След това можете да изпълните следната команда.

git push  : 

# Сценарий с лог

Искате да видите историята на вашите ангажименти, така че просто изпълнихте git log команда. Това показва много информация, но просто трябва да видите идентификатор и съобщение за извършване. След това можете да изпълните следната команда.

git log - oneline

git log --oneline ще покаже следния вид изход.

Първият седем символ в горния изход е идентификаторът за извършване на стенограмата и след това ние имаме нашето съобщение за ангажиране. Идентификаторът за ангажиране е стенограма, тъй като пълният идентификатор на ангажиране е четиридесет шестнадесетични знака, които определят 160-битов хеш SHA-1. Забележете Глава -> господар. Това означава, че сега сме в главния клон.

Ако искате да видите съобщението за ангажиране на конкретен автор, тогава можете да изпълните следната команда. Предполагам, че името на автора е Джон Доу.

git log --author = "Джон Доу"

# Сценарий със скривалище

Работите в клон и сте направили някои промени. Сега, вие просто искате да видите изхода или кода на този клон, преди да сте направили тези промени. След това можете да стартирате скривалидна команда. Това ще направи работното ви дърво чисто.

git скривалище

Ако искате промените си обратно, трябва да изпълните следната команда.

git stash pop

Ако не искате тези промени обратно, трябва да изпълните следната команда.

git stash drop

Променихте някои файлове в грешен клон. След това можете да скриете промените си и да ги направите в желания клон и да пуснете git stash pop там. Ще получите промените си в желания от вас клон.

# Сценарий с касата

Искате да преминете към клон. След това можете просто да изпълните следната команда.

git checkout 

Ако вече сте променили някакъв файл в текущия си клон, тогава не забравяйте да скриете промените си или да извършите промените. , Ако не скриете или не извършите тези промени, те ще се отразят и във вашия комутиран клон, който може да не искате или да имате нужда.

Имате разработка на име на клон и искате да направите клон от развитие и да преминете директно към новия си клон. След това можете да изпълните следната команда.

(разработка) $ git checkout -b 

Можете също така да направите поръчка, като използвате идентификатор на ангажимент. Можете безопасно да използвате идентификатор за стенограми, ако вашият проект не е много голям.

git checkout 

Това ще попадне в отделно състояние на главата в git. Head е просто препратка към текущия ангажимент (най-нов) в текущия клон. Като цяло, Head in git може да сочи клон или ангажимент. Когато Head сочи клон, git не се оплаква. Но когато главата сочи към ангажимент, но не и клон, тогава той преминава към отделена държава.

Искате да развиете функция от това отделено състояние на главата, тогава трябва да направите клон от това състояние и да развиете функцията си там.

git checkout -b 

# Сценарий с комит

Току-що добавихте съобщение за ангажиране и разбрахте, че има грешка във вашия ангажимент или просто искате да направите съобщението си за по-изразително и разбираемо. След това можете да използвате следната команда git.

git commit --amend -m "your-new-commit-message"

Ако току-що добавихте някои файлове или поправихте грешка, но не искате да добавяте друго съобщение за ангажиране, можете да използвате следната команда git с --no-edit flag.

git commit --amend --no-edit

Тук едно нещо е много важно да запомните, че изменението на последния ангажимент пренаписва историята на ангажиментите. Това означава, че вашият идентификатор за ангажиране ще се промени, когато промените ангажимент.

Ако вече сте избутали кода си в отдалеченото хранилище и след това сте разбрали, че трябва да промените съобщението си за извършване, след като го направите, трябва да направите натискане. Ако приемем вашето отдалечено име като произход, можете да изпълните следната команда.

git push origin  -f

# Сценарий с нулиране

Искате да отхвърлите последните си някои ангажименти. След това можете да използвате git reset, за да отхвърлите тези ангажименти. Има три флага за нулиране на git, които трябва да знаете.

  • --soft
  • --mixed
  • --трудно

Да приемем, че искате да отхвърлите промените, докато не добавите two.txt, който има идентификатор на 96b037c

Сега, нека стартираме команда за нулиране на git със --soft флаг.

git reset --soft 96b037c

git reset - софтуер ще осиротява всички ангажименти след този идентификатор за извършване (напр. 96b037c), но файловете няма да бъдат изтрити. Файловете ще бъдат в зоната за поставяне.

Осиротял ангажимент означава, че няма пряк път от разрешение за достъп до тях. Тези осиротели поръчки обикновено могат да бъдат намерени и възстановени с помощта на git reflog Git ще изтрие трайно всички осиротели ангажименти, след като стартира вътрешния боклук. По подразбиране git е конфигуриран да стартира колектора за боклук на всеки 30 дни.

Така че, ако стартирате git статус, ще видите следния изход.

Ако стартирате git log --oneline, ще видите, че предишните ангажименти са изтрити.

Ако стартирате команда за нулиране с --mixed flag, тогава вашите ангажименти ще бъдат осиротели и файловете няма да бъдат в поле за поставяне, но файловете ще бъдат намерени във файловата система. Ако не посочите някой флаг при нулиране, тогава git ще използва - смесено знаме по подразбиране.

Ако стартирате git статус, тогава ще видите следния изход.

Ако искате да изтриете окончателно файловете, тогава можете да стартирате команда за нулиране с --hard flag.

Добра практика можете да следвате, че първо стартирате команда за нулиране с --soft флаг и да видите засегнатите файлове. Ако сте сигурни, че не искате тези промени, можете да стартирате командата за нулиране с --hard flag.

Никога не трябва да използвате git reset , когато всякакви снимки след са били преместени в обществено хранилище. Премахването на ангажимент, който другите членове на екипа продължават да развиват, създава сериозни проблеми за сътрудничество.

# Сценарий с възстановяване

Работите в обществено хранилище и искате да отмените ангажимент. След това можете да изпълните следната команда.

git revert  --no-commit

След като изпълните горната команда, можете да проверите засегнатите файлове, като използвате статуса на git. След това трябва да направите ангажимент, използвайки git commit -m "commit-message".

git revert няма да осиротява ангажимент. Той просто ще отмени промените на вашия обърнат идентификатор на ангажимент.

Нека приемем, че искате да върнете последния ангажимент. След това след възстановяване на състоянието ви ще изглежда като следното изображение.

Преди последният файл за шест.txt запис не беше добавен, така че се изтрива и Five.txt се връща обратно в предишното му състояние. Сега, след като извършите историята на вашите ангажименти, ще изглежда така.

Искате да върнете няколко команди в диапазон, след което можете да изпълните следната команда.

git revert  ..  --no-commit

Ако искате да върнете няколко ангажимента, които не са в рамките на диапазон, тогава трябва да предоставите всеки идентификатор на ангажимент, който искате да възстановите.

git revert   --no-commit

# Сценарий с череша

Работите в клон и се нуждаете от ангажимент (напр. Поправяне на грешка) от друг клон, за да работите във вашия текущ клон. След това можете да използвате командата за избор на череша, за да получите този ангажимент във вашия текущ клон. Също така е полезно, ако сте извършили в грешен клон и искате ангажимента в друг клон.

Първо, трябва да преминете към клона, който има ангажимента. Копирайте идентификатора на ангажимента на този ангажимент и се върнете към вашия работен клон. След това изпълнете следната команда, за да получите ангажимента във вашия работен клон.

git cherry-pick е като да копирате нещо от папка и да го поставите в друга папка. Така че, тя няма да изтрие ангажимента от мястото, където сте избрали череша и идентификаторът в клона на дестинацията също ще бъде различен.

git cherry-pick 

Също така почти всеки ден се уча на git и не се считам за потребител на предварително git. Така че, ако направих грешка, не се колебайте да ме поправите и да сложите вашите предложения в секцията за коментари.