Git

Как да изберете череша в Git

Как да изберете череша в Git
git cherry pick е функция за сливане на Git. Но има малка разлика в git cherry pick и git merge. Освен това случаят на употреба е различен. Нека първо да видим как работи git merge, след което да го сравним с git cherry pick. По този начин ще разберете кога да използвате git merge и кога да използвате git cherry pick.

Да приемем, че имате Git хранилище. Работите върху майстор клон и сте направили няколко ангажименти (A, B и C) на майстор клон също.

Сега изведнъж имате страхотна идея. И така, вие създавате друг клон newidea. След това започнахте да правите ангажименти (E, F и G) там.

Направихте и някои промени в майстор клон отново и добави нов ангажимент З.

Сега, ако новата ви идея е успешна, тогава може да искате да обедините newidea клон до майстор клон. Да кажем, че сте го обединили. Това ще създаде нов ангажимент Аз както можете да видите на фигурата по-долу. Новият комит ще съдържа всичко (всички промени в комитите Е, F, и G) на клона newidea.

Сега, да речем, не искате да обединявате всички ангажименти на клона newidea към майстор клон. Искате само да обедините промените (само разликите се променят) в фиксацията F към майстор клон. Тук идва git cherry pick. Git cherry pick ви позволява да го направите. Просто намирате хеша на коммита, който искате да изберете, и го прилагате към клона, който искате. Много просто.

В тази статия ще ви покажа как да избирате череши в Git. И така, нека започнем.

Работен процес на Git Cherry Pick:

В този раздел ще настроя хранилище на Git по начин, по който ще разберете защо се използва git cherry pick и как да череша в Git.

Първо инициализирайте празно хранилище на Git череша-демо-демо / както следва:

$ git init cherry-pick-demo

Сега отидете до хранилището, както следва:

$ cd cherry-pick-demo /

Сега създайте a основен.° С файл със следното съдържание:

Сега добавете файла към подреждането, както следва:

$ git add .

Сега ангажирайте промените, както следва:

$ git commit -m 'първоначален ангажимент'

Сега създайте a .gitignore файл със следното съдържание:

Добавете файла към подреждащата област.

$ git add .

Задайте промените:

$ git commit -m 'добавен .gitignore файл '

Както можете да видите, сега имам 2 ангажирания в моя майстор клон.

$ git log --oneline

Сега искам да прехвърля локалното си Git хранилище към отдалечен Git сървър, за да могат други хора да работят върху това хранилище. Можете да използвате GitHub и тук. Ще използвам локален SSH сървър за това тук.

Така че, добавете URL адрес на отдалечено Git хранилище, както следва:

$ git отдалечено добавяне на произход git @ git.linuxhint.com: ~ / cherry-pick-demo.git

Сега натиснете майстор клон към отдалеченото хранилище на Git, както следва:

$ git push master master

Сега, да кажем Боб иска да допринесе за проекта. И така, той клонира хранилището на Git на компютъра си.

$ git clone git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject

Сега bob се придвижва до директорията на проекта си.

$ cd myproject /

Той също така има 2 ангажименти, които съм добавил.

$ git log --oneline

Сега bob създава a тест клон, за да изпробва идеите му.

$ git checkout -b тест

Той решава да промени върнатата стойност с константа EXIT_SUCCESS от stdlib библиотека.

Той добавя промените към сценичната зона.

$ git add .

Фиксира промените.

$ git commit -m 'използва EXIT_SUCCESS вместо 0 като върната стойност'

Сега той решава да използва функция printMessage () за да отпечатате съобщението. И така, той пише функцията.

Той отново извършва промените.

$ git add .
$ git commit -m 'добавена функция printMessage ()'

След това bob използва функцията в програмата.

Той отново извършва промените.

$ git add .
$ git commit -m 'използва функцията printMessage () за отпечатване на съобщението'

Сега bob има следните ангажименти в тест клон.

Сега bob избутва тестовия клон към отдалеченото хранилище на Git.

$ git push тест за произход

Сега Боб ви се обажда и ви разказва за страхотните промени, които направи. И така, изтеглихте промените в отдалеченото хранилище на Git в собственото си локално хранилище.

$ git fetch

Сега виждате нов клон произход / тест.

Намерихте и 3 нови ангажименти, направени от bob.

$ git log --oneline произход / тест

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

$ git log -p произход / тест

Решавате да не замените връщаната стойност с EXIT_SUCCESS, както направи bob.

Харесва ви концепцията за използване на функция за отпечатване на съобщения.

Харесвате и този ангажимент.

И така, искате да обедините 2 от направените bob 3 комита. Ако сте използвали git merge за обединяване на клоновия тест, тогава ще бъдат приложени всичките 3 фиксации. Но с функцията git cherry pick можете да обединявате само ангажиментите, които ви харесват.

Имайте предвид, че когато правите ангажименти за избор на череши в Git, винаги започвате с най-стария ангажимент и преминавате напред към най-новия.

Преди, аз череша, набра основен.° С файл изглежда по следния начин.

Сега, нека черешата избере най-стария от 2те ангажименти, 9a4e532, както следва:

$ git cherry-pick 9a4e532

Конфликт на сливане! Това може да се случи.

Сега отворете основен.° С файл и коригирайте конфликта на сливане.

Окончателният файл трябва да изглежда както следва.

Сега добавете промените към подреждането.

$ git add.

Сега ангажирайте промените, както следва:

$ git cherry-pick - продължи

ЗАБЕЛЕЖКА: Можете също да използвате git commit и тук. От теб зависи. предпочитам git cherry-pick-продължи тъй като автоматично ще използва съобщението за фиксиране от коммита Аз съм череша.

Сега въведете съобщението си за ангажиране тук и запазете файла.

Трябва да се добави нов ангажимент.

Сега, череша изберете следващия ангажимент, както следва:

$ git cherry-pick 08ba5e7

Няма конфликт на сливане. Страхотен! Новият ангажимент трябва да бъде добавен автоматично.

Както виждате, получавам точно това, което исках. Обединих само ангажиментите, от които имах нужда.

И така, вие избирате череши в Git. Благодаря, че прочетохте тази статия.

Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...