Skip to content

Latest commit

 

History

History
585 lines (337 loc) · 53.6 KB

C-git-commands.asc

File metadata and controls

585 lines (337 loc) · 53.6 KB

Appendix A: Гит команде

Кроз ову књигу смо увели десетине Гит команди и заиста смо се трудили да их уводимо уз причу, полако додајући још команди како се прича развија. Међутим, због тога су примери употребе команди донекле разбацани по целој књизи.

У овом додатку ћемо проћи кроз све Гит команде које смо обрадили у књизи, грубо груписане по намени. О свакој команди ћемо говорити врло уопштено, па ћемо онда указати на место у књизи на којем смо је употребили.

Tip

Дугачке опције можете да скратите. На пример, можете да откуцате git commit --a, што је исто као да сте откуцали git commit --amend. Ово функционише само када су слова након -- јединствена за једну опцију. Када пишете скрипте, немојте да скраћујете опције.

Подешавање и конфигурација

Постоје две команде које се прилично често употребљавају, од првог покретања програма Гит до уобичајеног свакодневног штеловања и референцирања, config и help команде.

git config

Програм Гит поседује подразумевани начин за извршавање стотина ствари. За већину њих, програму Гит можете наложити да их подразумевано обавља на другачији начин, или да поставите своје жељене поставке. У ово спада све од тога да програму Гит кажете које је ваше име до одређених боја које желите на терминалу или текст едитора који желите да користите. Постоји неколико фајлова које из којих ће ова команда да чита и у њих уписује, тако да вредности можете поставити глобално или само за одређене репозиторијуме.

Команда git config је коришћена у скоро сваком поглављу књиге.

У ch01-getting-started.asc смо је користили да наведемо своје име, имејл адресу и жељени едитор пре него што смо уопште и почели да користимо програм Гит.

У ch02-git-basics-chapter.asc смо показали како бисте могли да је употребите за креирање пречица команди које се развијају у дугачке низове опција, тако да не морате сваки пут да их куцате.

У ch03-git-branching.asc смо је користили да --rebase буде подразумевана опција када извршите git pull.

У ch07-git-tools.asc смо је употребили да поставимо подразумевано складиште за ваше HTTP лозинке.

у ch08-customizing-git.asc смо показали како да поставите запрљане и чисте филтере над садржајем који излази и који улази у Гит.

Коначно, у суштини је комплетан садржај ch08-customizing-git.asc посвећен овој команди.

git config core.editor команде

Пратећа упутства за конфигурацију су у ch01-getting-started.asc, многи едитори могу да се поставе на следећи начин:

Table 1. Исцрпна листа core.editor конфигурационих команди
Едитор Конфигурациона команда

Atom

git config --global core.editor "atom --wait"

BBEdit (Мек, са алатима из команде линије)

git config --global core.editor "bbedit -w"

Emacs

git config --global core.editor emacs

Gedit (Линукс)

git config --global core.editor "gedit --wait --new-window"

Gvim (Виндоуз 64-битни)

git config --global core.editor "'C:\Program Files\Vim\vim72\gvim.exe' --nofork '%*'" (Погледајте и напомену испод)

Kate (Линукс)

git config --global core.editor "kate"

nano

git config --global core.editor "nano -w"

Notepad (Виндоуз 64-битни)

git config core.editor notepad

Notepad++ (Виндоуз 64-битни)

git config --global core.editor "'C:\Program Files\Notepad\notepad.exe' -multiInst -notabbar -nosession -noPlugin" (Погледајте и напомену испод)

Scratch (Линукс)

git config --global core.editor "scratch-text-editor"

Sublime Text (мекОС)

git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"

Sublime Text (Виндоуз 64-битни)

git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -w" (Погледајте и напомену испод)

TextEdit (мекОС)

git config --global core.editor "open --wait-apps --new -e"

Textmate

git config --global core.editor "mate -w"

Textpad (Виндоуз 64-битни)

git config --global core.editor "'C:\Program Files\TextPad 5\TextPad.exe' -m (Погледајте и напомену испод)

UltraEdit (Виндоуз 64-битни)

git config --global core.editor Uedit32

Vim

git config --global core.editor "vim --nofork"

Visual Studio Code

git config --global core.editor "code --wait"

VSCodium (Слободни/Libre Open Source Software бинарни фајлови VSCode)

git config --global core.editor "codium --wait"

WordPad

git config --global core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'"

Xi

git config --global core.editor "xi --wait"

Note

Ако имате 32-битни едитор на Виндоуз 64-битном систему, програм ће бити инсталиран у C:\Program Files (x86)\ а не у C:\Program Files\ као што пише горњој табели.

git help

Команда git help се користи за приказ комплетне документације која се испоручује уз програм Гит о било којој команди. Пошто у овом додатку излажемо површни преглед већине популарнијих команди, потпуни списак свих могућих опција и заставица за сваку команду увек можете видети ако извршите git help <команда>.

Команду git help смо увели у ch01-getting-started.asc и показали вам како да је користите да добијете више информација о git shell у ch04-git-on-the-server.asc.

Набављање и креирање пројеката

Постоје два начина да дођете до Гит репозиторијума. Један је да га копирате из постојећег репозиторијума на мрежи или на неком другом месту, а други је да креирате нови у неком постојећем директоријуму.

git init

Када желите да неки директоријум претворите у нови Гит репозиторијум, тако да можете почети да контролишете његове верзије, једноставно можете да извршите git init.

Ово прво уводимо у ch02-git-basics-chapter.asc, где показујемо креирање потпуно новог репозиторијума са којим почињете да радите.

Укратко причамо о томе како можете да промените подразумевано име гране из „master” у ch03-git-branching.asc.

Ову команду користимо у ch04-git-on-the-server.asc за креирање празног огољеног репозиторијума за сервер.

Коначно, у ch10-git-internals.asc пролазимо кроз неке од детаља о ономе шта се заиста догађа у позадини.

git clone

Команда git clone је у суштини нешто као омотач око неколико других команди. Она креира нови директоријум, улази у њега и извршава git init којом прави празан Гит репозиторијум, додаје удаљени репозиторијум (git remote add) са URL адресе коју јој проследите (подразумевано под именом origin), извршава git fetch са тог удаљеног репозиторијума и онда одјављује најновији комит у ваш радни директоријум командом git checkout.

Команда git clone се у књизи користи на доста места, али ћемо навести неколико интересантних места.

У суштини је уведена и објашњена у ch02-git-basics-chapter.asc, где пролазимо кроз неколико примера.

У ch04-git-on-the-server.asc приказујемо употребу опције --bare којом се креира копија Гит репозиторијума без радног директоријума.

У ch07-git-tools.asc је користимо да распакујемо спаковани Гит репозиторијум.

Коначно, у ch07-git-tools.asc учимо о --recurse-submodules опцији којом је клонирање репозиторијума са подмодулима мало једноставније.

Мада се користи на многим другим местима у књизи, ово су она донекле јединствена или она на којима се њена потреба донекле разликује у односу на остала места.

Основно снимање

За основни процес рада у којем се садржај поставља на стејџ и комитује у историју, постоји само неколико основних команди.

git add

Команда git add поставља садржај из радног директоријума на стејџ (или „индекс”) за наредни комит. Када се изврши команда git commit, она подразумевано гледа у овај стејџ, тако да се git add користи да прецизно обликује оно што желите да да постане део снимка наредног комита.

Ова команда је изузетно важна у програму Гит и помиње се на доста места у књизи. Брзо ћемо проћи кроз неке јединствене употребе које можете да пронађете.

git add најпре уводимо и детаљно објашњавамо у ch02-git-basics-chapter.asc.

Помињемо како се користи за разрешавање конфликата при стајању у ch03-git-branching.asc.

Показујемо како се користи за интерактивно постављање делова измењеног фајла на стејџ у ch07-git-tools.asc.

Коначно, емулирамо је на ниском нивоу у ch10-git-internals.asc, тако да можете да стекнете идеју шта она обавља у позадини.

git status

Команда git status ће вам приказати различита стања фајлова у радном директоријуму и на стејџу. Који фајлови су измењени и нису на стејџу, који се налазе на стејџу али још увек нису комитовани. У свом уобичајеном облику, она ће такође да покаже и неке основне савете како да померате фајлове између ових етапа.

status најпре описујемо у ch02-git-basics-chapter.asc, и у њеном основном и у поједностављеном облику. Мада је користимо по целој књизи, овде је показано скоро све што можете да урадите командом git status.

git diff

Команда git diff се користи када желите да видите разлике између било која два стабла. То би могла бити разлика између радног окружења и стејџа (git diff само по себи), између стејџа и вашег последњег комита (git diff --staged), или између два комита (git diff master branchB).

Најпре представљамо основне употребе команде git diff у ch02-git-basics-chapter.asc, где показујемо како да погледате које измене се налазе на стејџу, а које још увек нису тамо.

Користимо је у ch05-distributed-git.asc да опцијом --check пронађемо евентуалне проблеме са празним простором пре него што комитујемо.

У ch05-distributed-git.asc сазнајемо како да ефективније погледамо разлике између две гране са git diff A…​B синтаксом.

Користимо је да филтрирамо разлике у празном простору са -b и сазнајемо начин како да упоредимо различите етапе фајлова у конфликту са --theirs, --ours и --base у ch07-git-tools.asc.

Коначно, користимо је да ефективно упоредимо измене у подмодулу са --submodule у ch07-git-tools.asc.

git difftool

Команда git difftool једноставно покреће спољни алат за прилаз разлика између два стабла у случају када вам је потребно нешто више од онога што може уграђена git diff команда.

Укратко је помињемо у ch02-git-basics-chapter.asc.

git commit

Команда git commit узима садржаје свих фајлова који су са git add постављени на стејџ и прави трајни снимак у бази података, па затим помера показивач текуће гране навише да показује на њега.

Основе комитовања најпре показујемо у ch02-git-basics-chapter.asc. Ту такође показујемо како се користи заставица -a којом се у свакодневним процесима рада прескаче git add корак и како се користи заставица -m којом се уместо покретања едитора директно прослеђује комит порука.

У ch02-git-basics-chapter.asc објашњавамо опцију --amend којом се врши измена најновијег комита.

У ch03-git-branching.asc улазимо у детаље онога што ради git commit, као и разлога зашто то ради баш на тај начин.

Сазнали смо како да криптографски потпишемо комитове помоћу заставице -S у ch07-git-tools.asc.

Коначно, представљамо шта команда git commit ради у позадини и како је заиста имплементирана у ch10-git-internals.asc.

git reset

Команда git reset се првенствено користи за поништавање ствари, што можете и да погодите када видите глагол. Она се помера око HEAD показивача и необавезно мења index или стејџ, а такође необавезно може и да измени радни директоријум ако употребите --hard. Ако се неправилно употреби, ова последња опција може да проузрокује губитак рада, тако да морате добро да је разумете пре него што почнете да је користите.

Најпре ефективно покривамо најједноставнији случај употребе команде git reset у ch02-git-basics-chapter.asc, где је користимо да са стејџа уклонимо фајл над којим смо извршили git add.

Затим је у ch07-git-tools.asc детаљно представљамо, комплетно поглавље је посвећено објашњењу ове команде.

У ch07-git-tools.asc користимо git reset --hard да прекинемо спајање, где такође користимо и git merge --abort, што донекле представља омотач око git reset команде.

git rm

git rm команда се користи за уклањање фајлова са стејџа и из радног директоријума програма Гит. Слична је команди git add у томе што на стејџ за наредни комит поставља акцију уклањања фајла.

Команду git rm детаљно представљамо у ch02-git-basics-chapter.asc, укључујући рекурзивно уклањање фајлова и уклањање само са стејџа, уз остављање у радном директоријуму са --cached.

Једина различита употреба команде git rm у књизи је у ch10-git-internals.asc где укратко употребљавамо и објашњавамо --ignore-unmatch када се извршава git filter-branch, што једноставно не изазива грешку када фајл који покушавамо да уклонимо не постоји. Ово може бити корисно када се пишу скрипте.

git mv

Команда git mv је мала згодна команда за померање фајла па покретање git add над новим фајлом и git rm над старим фајлом.

Само је укратко помињемо у ch02-git-basics-chapter.asc.

git clean

Команда git clean се користи за уклањање нежељених фајлова из радног директоријума. То може да укључи уклањање привремених артефакта изградње или фајлова конфликта при спајању.

Доста опција и сценарија у којима би могли да употребите команду за чишћење покривамо у ch07-git-tools.asc.

Гранање и спајање

Постоји само неколико команди које у програму Гит имплементирају већину функционалности гранања и спајања.

git branch

Команда git branch је уствари нека врста алата за управљање гранама. Може да вам испише постојеће гране, креира нову грану, обрише гране и промени им име.

Већи део ch03-git-branching.asc је посвећен команди branch која се користи кроз цело поглавље. Најпре је уводимо у ch03-git-branching.asc и кроз већину њених осталих могућности (испис и брисање) пролазимо у ch03-git-branching.asc.

У ch03-git-branching.asc користимо опцију git branch -u да поставимо грану за праћење.

Коначно, у ch10-git-internals.asc прелазимо нешто од онога што ова команда обавља у позадини.

git checkout

Команда git checkout се користи за промену текуће гране и одјављивање садржаја у радни директоријум.

Први пут се сусрећемо са овом командом у ch03-git-branching.asc заједно уз git branch команду.

Сазнајемо како да је употребимо да започнемо праћење гране заставицом --track у ch03-git-branching.asc.

Користимо је да поново уведемо конфликте фајлова са --conflict=diff3 у ch07-git-tools.asc.

Улазимо у детаље њене везе са git reset у ch07-git-tools.asc.

Коначно, приказујемо неке детаље имплементације у ch10-git-internals.asc.

git merge

Алат git merge се користи за спајање једне или више грана у грану коју сте одјавили. Затим ће померити унапред текућу грану на резултат спајања.

Команда git merge је први пут уведена у ch03-git-branching.asc. Мада се користи на многим местима у књизи, постоји мало варијација merge команде — углавном само git merge <грана> уз име једне гране у коју желите да спојите.

Показали смо како да се уради спљескано спајање (када програм Гит спаја рад али се претвара као да је то нови комит и не бележи историју гране коју спајате) на самом крају ch05-distributed-git.asc.

У ch07-git-tools.asc смо доста говорили о процесу спајања и самој команди, укључујући команду -Xignore-space-change и --abort заставицу која прекида проблематично спајање.

Научили смо како да проверимо потписе пре спајања у случају да ваш пројекат користи GPG потписивање у ch07-git-tools.asc.

Коначно, научили смо о спајању подстабала у ch07-git-tools.asc.

git mergetool

Команда git mergetool просто покреће спољни помоћник за спајање у случају да имате проблема са спајањем у програму Гит.

Укратко је помињемо у ch03-git-branching.asc, а детаљно објашњавамо како да имплементирате сопствени спољни алат за спајање у ch08-customizing-git.asc.

git log

Команда git log се користи да прикаже забележену историју пројекта до које може да се дође када се из последњег комит снимка крене уназад. Подразумевано ће да прикаже само историју гране на којој се тренутно налазите, али јој можете проследити различиту, или чак и више глава или грана из којих треба да крене у обилазак. Такође се често користи за приказ разлика између две или више грана на нивоу комита.

Ова команда се користи у скоро сваком поглављу књиге да покаже историју пројекта.

Команду уводимо и донекле детаљно представљамо у ch02-git-basics-chapter.asc. Ту објашњавамо опције -p и --stat како би стекли идеју шта је увео сваки комит, затим опције --pretty и --oneline за концизнији приказ историје, уз нешто једноставних опција за филтрирање по датуму и аутору.

У ch03-git-branching.asc је користимо уз опцију --decorate да се једноставно графички прикаже где се налазе показивачи наше гране, а користимо и опцију --graph да видимо како изгледају историје које се разилазе.

У ch05-distributed-git.asc и ch07-git-tools.asc објашњавамо гранаA..гранаБ синтаксу која се користи уз команду git log за приказ комитова који су у грани јединствени релативно у односу на неку другу грану. У ch07-git-tools.asc ово приказујемо прилично детаљно.

У ch07-git-tools.asc и ch07-git-tools.asc приказујемо гранаA…​гранаБ формат и --left-right синтаксу да видимо шта се налази на једној грани или на другој, али не на обе. У ch07-git-tools.asc такође показујемо како да се опција --merge користи као помоћ код дибаговања конфликта при спајању, као и употребу опције --cc за преглед конфликата комитова спајања у историји.

У ch07-git-tools.asc користимо опцију -g за преглед Гит reflog кроз овај алат, уместо да вршимо обилазак гране.

У ch07-git-tools.asc приказујемо употребу опција -S и -L за обављање прилично софистицираних претрага нечега што се историјски десило у коду, као што је праћење историје неке функције.

У ch07-git-tools.asc видимо како се користи --show-signature за додавање валидационог стринга у сваки комит излаза git log команде у зависности од тога да ли је комит био исправно потписан или не.

git stash

git stash команда се користи за привремено чување рада који није комитован како би се очистио радни директоријум без потребе да се комитује незавршени посао на грани.

Она је у суштини потпуно представљена у ch07-git-tools.asc.

git tag

Команда git tag се користи за постављање сталног маркера на одређено место у историји кода. У општем случају се ово користи за ствари као што су издања.

Ова команда је представљена и детаљно објашњена у ch02-git-basics-chapter.asc, а у пракси је користимо у ch05-distributed-git.asc.

Такође смо у ch07-git-tools.asc показали како да се креира GPG потписана ознака заставицом -s и провера ознаке заставицом -v.

Дељење и ажурирање пројеката

Нема много команди у програму Гит које приступају мрежи, скоро све команде оперишу над локалном базом података. Када сте спремни да поделите свој рад или да повучете измене са неког другог места, постоји неколико команди које раде са удаљеним репозиторијумима.

git fetch

Команда git fetch комуницира са удаљеним репозиторијумом, преузима све информације из тог репозиторијума које се не налазе у вашем тренутном, па их смешта у локалну базу података.

Са овом командом се први пут сусрећемо у ch02-git-basics-chapter.asc, па настављамо са приказом примера њене употребе у ch03-git-branching.asc.

Такође је користимо у неколико примера у ch05-distributed-git.asc.

Користимо је да преузмемо једну одређену референцу која се налази ван подразумеваног простора у ch06-github.asc, а у ch07-git-tools.asc видимо како да преузмемо из запакованог репозиторијума.

Подешавамо детаљно прилагођене рефспекове да git fetch уради нешто мало другачије од онога што подразумевано ради у ch10-git-internals.asc.

git pull

Команда git pull је у суштини комбинација команди git fetch и git merge, којом програм Гит преузме са удаљеног репозиторијума који наведете и онда непосредно након тога покуша да изврши спајање у грану на којој се тренутно налазите.

Укратко смо је представили у ch02-git-basics-chapter.asc и показали како да видите шта ће спојити ако је покренете у ch02-git-basics-chapter.asc.

Такође показујемо како да је употребите као помоћ при тешкоћама ребазирања уch03-git-branching.asc.

У ch05-distributed-git.asc показујемо како да је користите са URL адресом да једнократно повучете измене.

Коначно, у ch07-git-tools.asc укратко помињемо да можете употребити опцију --verify-signatures ове команде да проверите да ли су комитови које повлачите GPG потписани.

git push

Команда git push се користи за комуникацију са другим репозиторијумом, израчунавање шта ваш репозиторијум има што удаљени нема, па затим гура разлику у други репозиторијум. Она захтева да имате право уписа у удаљени репозиторијум, па је логично да се аутентификује на неки начин.

Команду git push прво представљамо у ch02-git-basics-chapter.asc. Ту обрађујемо основе гурања гране на удаљени репозиторијум. У ch03-git-branching.asc идемо мало детаљније у гурање одређених грана, а у ch03-git-branching.asc показујемо како да поставите гране за праћење на које се аутоматски гура. У ch03-git-branching.asc користимо заставицу --delete да обришемо грану на серверу са git push.

Кроз ch05-distributed-git.asc дајемо неколико примера употребе git push за дељење рада на гранама кроз више удаљених репозиторијума.

Начин употребе ове команде за дељење ознака које сте направили опцијом --tags показујемо у ch02-git-basics-chapter.asc.

У ch07-git-tools.asc користимо опцију --recurse-submodules да проверимо да ли је сав рад из наших подмодула објављен пре него што гурамо на суперпројекат, што је заиста корисно када се користе подмодули.

У ch08-customizing-git.asc укратко причамо о pre-push куки, која представља скрипту коју постављамо да се изврши пре него што се заврши гурање и која проверава да ли је дозвољено да се обави гурање.

Коначно, у ch10-git-internals.asc причамо о гурању са потпуним рефспеком уместо уопштених пречица које се обично користе. Ово вам помаже да будете потпуно одређени у вези рада који желите да поделите.

git remote

Команда git remote је алат за управљање вашом колекцијом удаљених репозиторијума. Омогућава вам да дугачке URL адресе сачувате као кратке ручке, као што је „origin” тако да не морате стално да их уносите. Можете да их имате неколико и команда git remote се користи да их за додате, измените и обришете.

Ова команда је детаљно представљена у ch02-git-basics-chapter.asc, укључујући приказ, додавање, уклањање и измену имена.

Такође се користи се и у скоро сваком наредном поглављу књиге, али увек у стандардном git remote add <име> <url> формату.

git archive

Команда git archive се користи за креирање фајла архиве одређеног снимка пројекта.

У ch05-distributed-git.asc команду git archive користимо да направимо tarball архиву пројекта коју можемо да делимо.

git submodule

Команда git submodule се користи за управљање спољним репозиторијумима унутар обичних репозиторијума. Ово би могло да послужи за библиотеке или остале врсте дељених ресурса. Команда submodule има неколико подкоманди (add, update, sync, итд.) којима се управља овим ресурсима.

Ова команда се помиње само у ch07-git-tools.asc и ту је детаљно обрађена.

Инспекција и поређење

git show

Команда git show може да прикаже Гит објекат на једноставан начин лако читљив људима. Ову команду ћете углавном користити да погледате информације о ознаци или комиту.

По први пут је користимо у ch02-git-basics-chapter.asc да нам прикаже информације о прибележеним ознакама.

Касније је поприлично користимо у ch07-git-tools.asc за приказ комитова које разрешавају разни начини избора ревизија.

Једна од интересантнијих ствари које радимо са git show је у ch07-git-tools.asc где издвајамо садржај одређеног фајла из различитих етапа за време конфликта при спајању.

git shortlog

Команда git shortlog се користи за резимирање излаза команде git log. Она ће прихватити многе опције исте као и команда git log али ће уместо да прикаже све комитове, приказати сажетак комитова груписан по ауторима.

У ch05-distributed-git.asc смо показали како да је употребите да креирате фин лог измена.

git describe

Команда git describe се користи да узме све што разрешава у комит и креира стринг који је донекле читљив људима и који се неће изменити. То је начин да се добије опис комита који је једнозначан као и SHA-1 хеш комита, али лакше разумљив.

git describe користимо у ch05-distributed-git.asc и ch05-distributed-git.asc да добијемо стринг којим након тога именујемо фајл издања.

Отклањање грешака

Програм Гит поседује неколико команди које се користе као помоћ при отклањању грешака у коду. То иде од одређивања места на којем је нешто уведено, до одређивања онога ко је то увео.

git bisect

Алат git bisect не невероватно користан алат за исправљање грешака који се користи да се пронађе одређени комит који је први увео бак или проблем извршавањем аутоматизоване бинарне претраге.

У потпуности је објашњен у ch07-git-tools.asc и помиње се само у том одељку.

git blame

Команда git blame означава линије било ког фајла информацијом који комит је последњи унео измену у сваку од линија фајла, као и особу која је направила тај комит. Ово помаже да се открије особа која треба да пита за више информација у вези одређеног дела кода.

Ово је објашњено у ch07-git-tools.asc и помиње се само у том одељку.

git grep

Команда git grep може да вам помогне да пронађете било који стринг или регуларни израз у било ком од фајлова вашег изворног кода, чак и у старијим верзијама пројекта.

Објашњена је у ch07-git-tools.asc и помиње се само у том одељку.

Крпљење

Неколико команди програма Гит је фокусирано на концепт да се комитови посматрају у светлу измена које уводе, као да је низ комитова низ закрпа. Те команде вам помажу да гранама управљате на овај начин.

git cherry-pick

Команда git cherry-pick се користи да се одабере измена коју је увео један Гит комит и да се покуша њено поновно увођење на грану на којој се тренутно налазите. Ово може бити корисно да се из гране узме само један или два комита појединачно, јер се спајањем гране узимају све измене.

Одабир измена (cherry picking) је описан и показан у ch05-distributed-git.asc.

git rebase

Команда git rebase је у основи аутоматизована команда cherry-pick. Она одређује низ комитова па их затим одабира један по један и у истом редоследу их примењује не неком другом месту.

Ребазирање је детаљно обрађено у ch03-git-branching.asc, укључујући и расправу о проблемима у сарадњи када се примени ребазирање грана које су већ јавне.

Ми је у ch07-git-tools.asc користимо у вежби током примера поделе историје у два одвојена репозиторијума, користећи и заставицу --onto.

У ch07-git-tools.asc показујемо наилазак на конфликт при спајању током ребазирања.

Такође је користимо у ch07-git-tools.asc за режим интерактивног скриптинга са опцијом -i.

git revert

Команда git revert је у суштини обрнута команда git cherry-pick. Она креира нови комит који примењује тачно супротно од измене уведене комитом који циљате, што га ефективно поништава.

Користимо је ch07-git-tools.asc за поништавање комита спајања.

Имејл

Многи Гит пројекти, укључујући и сам Гит, се у потпуности одржавају путем мејлинг листи. У програм Git је уграђен већи број алата који олакшавају тај процес, од генерисања закрпа које лако можете да пошаљете имејлом до примене тих закрпа из имејл сандучета.

git apply

Команда git apply примењује закрпу коју је креирала команда git diff или чак GNU diff команда. То слично ономе што би могла да уради команда patch уз неколико мањих разлика.

У ch05-distributed-git.asc приказујемо како се користи као и околности у којима би могли да је употребите.

git am

Команда git am се користи да примени закрпе из долазног имејл сандучета, тачније оног форматираног као mbox. Ово је корисно да се путем имејла приме закрпе и да се једноставно примене на пројекат.

Употребу и процес рада око git am команде смо показали у ch05-distributed-git.asc укључујући и употребу опција --resolved, -i и -3.

Такође постоји и већи број кука које можете користити као помоћ у процесу рада везаног за команду git am и све оне су приказане у ch08-customizing-git.asc.

Такође је у ch06-github.asc користимо да се примени закрпа са изменама форматираним као GitHub захтев за повлачење.

git format-patch

Команда git format-patch се користи да генерише низ закрпа у mbox формату које у исправном облику можете да пошаљете на мејлинг листу.

У ch05-distributed-git.asc прелазимо пример давања доприноса пројекту коришћењем git format-patch алата.

git imap-send

Команда git imap-send шаље серверу поштанско сандуче које је генерисала команда git format-patch у IMAP директоријум незавршених порука.

У ch05-distributed-git.asc пролазимо кроз пример давања доприноса пројекту слањем закрпа алатом git imap-send.

git send-email

Команда git send-email се користи за слање закрпа које је генерисала команда git format-patch имејлом.

У ch05-distributed-git.asc пролазимо кроз пример давања доприноса пројекту слањем закрпа алатом git send-email.

git request-pull

Команда git request-pull се једноставно користи да генерише пример тела имејл поруке коју треба некоме да пошаљете. Ако имате грану на јавном серверу и желите да неко зна како да интегрише те измене без потребе да закрпе шаљете имејлом, можете да извршите ову команду и пошаљете њен излаз особи која треба да повуче измене.

Начин употребе команде git request-pull за генерисање поруке повлачења описујемо у ch05-distributed-git.asc.

Спољни системи

Програм Гит долази са неколико команди којима се интегрише са осталим системима за контролу верзије.

git svn

Команда git svn се користи за комуникацију са Subversion системом за контролу верзије као клијент. То значи да програм Гит можете употребити да одјавите са и да комитујете на Subversion сервер.

Ова команда је детаљно приказана у ch09-git-and-other-systems.asc.

git fast-import

За остале системе контроле верзије или за увоз из скоро било ког формата, можете да употребите команду git fast-import која брзо мапира други формат у нешто што програм Гит лако може да забележи.

Ова команда је детаљно приказана у ch09-git-and-other-systems.asc.

Администрација

Ако администрирате Гит репозиторијум или ако морате да поправите нешто крупно, програм Git вам обезбеђује већи број административних команди које вам помажу у томе.

git gc

Команда git gc обавља „скупљање ђубрета” по вашем репозиторијуму, уклањајући непотребне фајлове из базе података и пакујући преостале фајлове у ефикаснији формат.

Ова команда се обично извршава у позадини, мада можете и ручно да је покренете ако то желите. У ch10-git-internals.asc приказујемо неколико примера.

git fsck

Команда git fsck се користи за проверу конзистентности интерне базе података и проблема су вез ње.

Користили смо је само једном у ch10-git-internals.asc да пронађемо висеће објекте.

git reflog

Команда git reflog пролази кроз лог свих места на које су указивале главе ваших грана док сте радили да би пронашла комитове које сте можда изгубили кроз поновно исписивање историја.

Ову команду углавном приказујемо у ch07-git-tools.asc, где представљамо уобичајену употребу, као и како да употребите git log -g да исте информације погледате у излазу команде git log.

У ch10-git-internals.asc такође пролазимо кроз практични пример опоравка једне такве изгубљене гране.

git filter-branch

Команда git filter-branch се користи за поновно исписивање гомиле комитова према одређеним шаблонима, као што је уклањање фајла са свих места или филтрирање комплетног репозиторијума на један једини поддиректоријум у циљу издвајања пројекта.

У ch07-git-tools.asc објашњавамо команду и истражујемо неколико различитих опција као што су --commit-filter, --subdirectory-filter и --tree-filter.

У ch09-git-and-other-systems.asc је користимо да поправимо увезене спољне репозиторијуме.

Водоводне команде

Такође постоји већи број водоводних команди нижег нивоа које срећемо кроз књигу.

Прва на коју наилазимо је ls-remote у ch06-github.asc коју користимо за преглед сирових референци на серверу.

ls-files користимо у ch07-git-tools.asc, ch07-git-tools.asc и ch07-git-tools.asc да прикажемо сирови поглед на стање стејџа.

Такође помињемо rev-parse у ch07-git-tools.asc да узме скоро било који стринг и претвори га у SHA-1 објекта.

Међутим, већину водоводних команди ниског нивоа представљамо у ch10-git-internals.asc, што је мање-више оно на шта се фокусира то поглавље. Покушали смо да их не употребимо у већем делу остатка књиге.