-
1. Почеток
- 1.1 За верзиска контрола
- 1.2 Кратка историја на Git
- 1.3 Основи на Гит
- 1.4 Командната линија
- 1.5 Инсталирање на Git
- 1.6 First-Time Git Setup
- 1.7 Getting Help
- 1.8 Заклучок
-
2. Основите на Git
-
3. Гранење во Git
- 3.1 Гранење објаснето
- 3.2 Основно разгранување и спојување
- 3.3 Branch Management
- 3.4 Работни процеси
- 3.5 Далечински гранки
- 3.6 Ребаза
- 3.7 Заклучок
-
4. Git на Сервер
- 4.1 Протоколите
- 4.2 Добивање на Git на сервер
- 4.3 Генерирање на вашиот SSH јавен клуч
- 4.4 Поставување на серверот
- 4.5 Гит демон
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опции за домаќини на трети лица
- 4.10 Заклучок
-
5. Дистрибуиран Git
- 5.1 Дистрибуирани работни процеси
- 5.2 Придонес кон проект
- 5.3 Приватен мал тим
- 5.4 Одржување на проект
- 5.5 Заклучок
-
6. GitHub
-
7. Git Алатки
- 7.1 Revision Selection
- 7.2 Интерактивно стажирање
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Напредно спојување
- 7.9 Rerere
- 7.10 Дебагирање со Git
- 7.11 Submodules
- 7.12 Збивање
- 7.13 Заменување
- 7.14 Складирање на ингеренции
- 7.15 Заклучок
-
8. Персонализација на Git
- 8.1 Git Configuration
- 8.2 Git Атрибути
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Заклучок
-
9. Git и други системи
- 9.1 Git како Клиент
- 9.2 Мигрирање кон Git
- 9.3 Заклучок
-
10. Внатрешноста на Git
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Заклучок
-
A1. Appendix A: Git во други околини
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Заклучок
-
A2. Appendix B: Вметнување на Git во вашите апликации
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Appendix C: Git команди
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
6.3 GitHub - Одржување на проект
Одржување на проект
Сега, кога сме удобно да придонесеме за еден проект, ајде да погледнеме на другата страна: создавање, одржување и администрирање на вашиот сопствен проект.
Креирање на нов складиште
Ајде да создадеме ново складиште со кое ќе го споделиме нашиот проект код.
Започнете со кликнување на копчето ‘` Нов репозиторија '’ на десната страна на контролната табла или од копчето {plus}
во горната лента со алатки веднаш до вашето корисничко име како што се гледа во << _ new_repo_dropdown >>.
Ова ќе ве однесе до формула "нов складиште":
Сите што навистина треба да направите тука е да обезбедите име на проектот; остатокот од полињата се целосно опционални.
За сега, едноставно кликнете на копчето Креирај репозиториум 'и бум - имате ново складиште на GitHub, наречено
<корисничко име> / <име на проект> `.
Бидејќи немате уште уште еден код, GitHub ќе ви покаже инструкции за тоа како да креирате сосема нов Git складиште или да поврзете постоечки проект Git. Ние нема да го објавиме ова тука; ако ви треба освежувач, проверете << ch02-git-basics-chapter >>.
Сега, кога вашиот проект е хостиран на GitHub, можете да го дадете URL-то на секој со кого сакате да го споделите вашиот проект.
Секој проект на GitHub е достапен преку HTTPS како https://github.com/ <user> / <project_name>
и над SSH како git@github.com: <user> / <project_name>
.
Git може да преземе од и да им помогнам на двата од овие УРЛ-адреси, но тие се контролирани со пристап врз база на ингеренциите на корисникот што се поврзува со нив.
Note
|
Често е подобро да се сподели HTTPS базиран URL за јавен проект, бидејќи корисникот не мора да има GitHub сметка за да го пристапи за клонирање. Корисниците ќе мора да имаат сметка и подигнато SSH клуч за пристап до вашиот проект, ако им го дадете SSH URL-то. HTTPS-от е исто така иста URL-адреса што тие ќе ја стават во прелистувачот за да го видат проектот таму. |
Додавање на соработници
Ако работите со други луѓе на кои сакате да им дадете пристап за пристап, треба да ги додадете како ‘` соработници '’. Ако Бен, Џеф и Луиз се регистрираат за сметки на GitHub и сакате да им дадете пристап до вашето складиште, можете да ги додадете во вашиот проект. Со тоа ќе им се даде пристап до "push", што значи дека имаат и пристап за читање и запишување на проектот и Git репозиториум.
Кликнете на врската "Поставувања" на дното на десната странична лента.
Потоа изберете "соработници" од менито на левата страна. Потоа, едноставно внесете корисничко име во полето и кликнете ‘` Додај соработник. ’ Можете да го повторите ова онолку пати колку што сакате да им дадете пристап на сите што ги сакате. Ако треба да го откажете пристапот, само кликнете на `` X ' на десната страна од нивниот ред.
Управување со барањата за повлекување
Сега кога имате проект со некој код во него, а можеби дури и неколку соработници кои исто така имаат притисни пристап, ајде да преминеме што да правиме кога ќе добиеш Барање за влечење.
Барањата за повлекување или може да дојдат од гранка во вилушка на вашето складиште или тие можат да доаѓаат од друга гранка во истото складиште. Единствената разлика е што оние во вилушка често се од луѓе каде што не можете да им помогнам на нивната гранка и тие не можат да им помогнам на вашите, додека со внатрешните Потребни барања генерално двете страни можат да пристапат до гранката.
За овие примери, да претпоставиме дека сте ‘` tonychacon ’ и сте создале нов Arduino код проект наречен `` избледи '.
Известувања за е-пошта
Некој доаѓа заедно и прави промена на вашиот код и ви испраќа барање за повлекување. Треба да добиете е-мејл за известување за новото барање за повлекување и треба да изгледа нешто како << _ email_pr >>.
Има неколку работи што треба да ги забележите за оваа е-пошта. Тоа ќе ви даде мал diffstat - листа на датотеки кои се променија во Потребното барање и колку. Тоа ви дава линк до барањето за повлекување на GitHub. Исто така, ви дава неколку URL-адреси што можете да ги користите од командната линија.
Ако ја забележите линијата која вели git pull <url> patch-1
, ова е едноставен начин да се спојат во оддалечена гранка без да мора да додадете далечински управувач.
Отидовме брзо ова во << _checking_out_remotes >>.
Ако сакате, можете да креирате и префрлите на гранка на тема и потоа стартувајте ја оваа команда за да се спојат во промените на барањето.
Другите интересни URL-и се адресите на ".diff" и ".patch", кои, како што може да претпоставите, обезбедуваат обединети разни и patch верзии на Pull Request. Вие би можеле технички да се спојат во Работата со барање за повлекување со нешто слично:
$ curl http://github.com/tonychacon/fade/pull/1.patch | git am
Соработка на барањето за повлекување
Како што се опфатени во << ch06-github_flow >>, сега можете да разговарате со лицето кое го отворило барањето за влечење. Можете да коментирате за конкретни линии на код, да коментирате за цели обврски или да коментирате за целото барање за повлекување, користејќи го GitHub Flavored Markdown насекаде.
Секој пат кога некој друг ќе коментира за барањето за повлекување ќе продолжи да добива известувања преку e-mail, за да знаете дека се случува активност. Секој од нив ќе има линк до Барањето за повлекување, каде што се случува активноста, а исто така можете директно да одговорите на е-поштата за да коментирате за низата за повлекување.
Откако кодот е на место кое ви се допаѓа и сакате да го вклучите, можете или да го повлечете кодот и да го споите локално, или со синтаксата git pull <url> <branch>
што ја видовме претходно, или со додавање на вилушка како далечински и преземање и спојување.
Ако спојувањето е тривијално, исто така можете само да го притиснете копчето ‘Merge '’ на GitHub-страницата. Ова ќе направи "не-брз напред" спојување, создавајќи залог за спојување дури и ако е можно брзо спојување. Ова значи дека без оглед на тоа, секој пат кога ќе го достигнете копчето за спојување, се креира спојување. Како што можете да видите во << _ merge_button >>, GitHub ви ги дава сите овие информации ако кликнете на линкот за навестување.
Ако одлучите дека не сакате да го споите, исто така можете само да го затворите барањето за повлекување и да го известите лицето кое го отворило.
Барање за одмаглување
Ако се занимавате со * многу * на Потребни Потврди и не сакате да додадете еден куп од далечински управувачи или да направите едно време да го повлечете секој пат, постои уреден трик што GitHub ви овозможува да го направите. Ова е малку напреден трик и ние ќе ги надминеме деталите за ова малку повеќе во << _refspec >>, но може да биде прилично корисно.
GitHub всушност ги рекламира гранките за повлекување на барањето за складиште како вид на псевдо-филијали на серверот. Стандардно, не ги добивате кога клонирате, но тие се таму на нејасен начин и можете лесно да пристапите до нив.
За да го демонстрираме ова, ние ќе користиме команда на ниско ниво (често нарекувана "водовод", која ќе ја прочитаме повеќе во << _plumbing_porcelain >>), наречена ` ls-remote ". Оваа команда генерално не се користи во секојдневни операции Git, но корисно е да ни покаже кои референци се присутни на серверот.
Ако ја извршуваме оваа команда против "blink" складиштето што го користевме порано, ќе добиеме листа на сите гранки и ознаки и други референци во складиштето.
$ git ls-remote https://github.com/schacon/blink
10d539600d86723087810ec636870a504f4fee4d HEAD
10d539600d86723087810ec636870a504f4fee4d refs/heads/master
6a83107c62950be9453aac297bb0193fd743cd6e refs/pull/1/head
afe83c2d1a70674c9505cc1d8b7d380d5e076ed3 refs/pull/1/merge
3c8d735ee16296c242be7a9742ebfbc2665adec1 refs/pull/2/head
15c9f4f80973a2758462ab2066b6ad9fe8dcf03d refs/pull/2/merge
a5a7751a33b7e86c5e9bb07b26001bb17d775d1a refs/pull/4/head
31a45fc257e8433c8d8804e3e848cf61c9d3166c refs/pull/4/merge
Се разбира, ако сте во вашето складиште и извршувате git ls-remote location
или што далечински сакате да проверите, тоа ќе ви покаже нешто слично на ова.
Ако складиштето е на GitHub и имате било какви Отвори за Повлекување кои се отворени, ќе ги добиете овие референци кои се префиксирани со refs / pull /
.
Тие се во основа гранки, но бидејќи тие не се под refs / heads /
, не ги добивате нормално кога клонирате или добивате од серверот - процесот на преземање ги игнорира нормално.
Постојат две референци по Барањето за повлекување - оној што завршува со / head
укажува на истата обврска како последната застапеност во гранката Барање за повлекување.
Значи, ако некој го отвори Барањето за повлекување во нашето складиште и нивната гранка се нарекува bug-fix
и посочува да се изврши` a5a775`, тогаш во * нашето * складиште нема да имаме branch fix
филијала (бидејќи тоа е во нивната вилушка), но ние ќе имаме pull / <pr #> / head
што укажува на` a5a775`.
Ова значи дека ние лесно можеме да ја повлечеме секоја филијала за повлекување на повик во една оди, без да мора да додадеме кутија од далечински управувачи.
Сега, можете да направите нешто како преземање на референцата директно.
$ git fetch origin refs/pull/958/head
From https://github.com/libgit2/libgit2
* branch refs/pull/958/head -> FETCH_HEAD
Ова му кажува на Git, "Поврзете се со далечинскиот управувач" и повлечете го реф код наречен "refs / pull / 958 / head". '
Git среќно се послужува и презема сè што ви е потребно за да го конструирате тој рефлектира и поставува покажувач кон саканата заложба под .git / FETCH_HEAD
.
Можете да го следите тоа со git спојување FETCH_HEAD
во гранка што сакате да ја тестирате, но таа порака за спојување изгледа малку чудно.
Исто така, ако разгледувате * многу * на барања за повлекување, ова станува досадно.
Исто така, постои начин да се донесат all на барањата за повлекување, и да ги задржите во тек со секое поврзување со далечинскиот управувач.
Отворете .git / config
во вашиот омилен уредувач и побарајте го далечинскиот управувач` потекло`.
Треба да изгледа малку вака:
[remote "origin"]
url = https://github.com/libgit2/libgit2
fetch = +refs/heads/*:refs/remotes/origin/*
Таа линија што започнува со fetch =
е ‘` refspec. '’
Тоа е начин на мапирање имиња на далечинскиот управувач со имиња во вашиот локален .git
именик.
Ова особено кажува Git, "работите на далечинскиот управувач што се наоѓаат под" refs / heads "треба да одат во моето локално складиште под" refs / remotes / origin "."
Можете да го промените овој дел за да додадете уште еден рефлекс:
[remote "origin"]
url = https://github.com/libgit2/libgit2.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Последната линија му кажува на Git, ‘` Сите рефлекти кои изгледаат како refs / pull / 123 / head
треба да се складираат локално како` refs / remotes / origin / pr / 123`. '’
Сега, ако ја зачувате таа датотека и направете git fetch
:
$ git fetch
# …
* [new ref] refs/pull/1/head -> origin/pr/1
* [new ref] refs/pull/2/head -> origin/pr/2
* [new ref] refs/pull/4/head -> origin/pr/4
# …
Сега сите барања за далечинско повлекување се претставени локално со рефлекти кои делуваат како проследени гранки; тие се само за читање, и тие се ажурираат кога ќе направите донеси. Ова го прави супер лесно да се обиде кодот од барање за повлекување на локално ниво:
$ git checkout pr/2
Checking out files: 100% (3769/3769), done.
Branch pr/2 set up to track remote branch pr/2 from origin.
Switched to a new branch 'pr/2'
На орел очи меѓу вас ќе се забележи на "главата" на крајот на далечинскиот дел од refspec. Исто така има и "refs / pull / # / merge" ref на GitHub страна, што претставува залог што ќе резултира ако го притиснете копчето ‘` спојување '’ на страницата. Ова може да ви овозможи да го тестирате спојувањето пред да го притиснете копчето.
Повлечете Барања за Повлекување Барања
Не само што може да ги отворите барањата за повлекување кои се насочени кон главната или майстер
филијалата, всушност можете да отворите барање за повлекување насочено кон било која гранка во мрежата.
Всушност, можете дури и да наведете друго барање за повлекување.
Ако видите Барање за влечење кое се движи во вистинската насока и имате идеја за промена која зависи од неа или не сте сигурни дека е добра идеја или едноставно немате пристап до тастатурата до целните гранки, можете директно да го отворите барањето за повлекување.
Кога одите за да отворите барање за повлекување, има кутија на врвот на страницата која одредува која гранка барате да се повлече и од која барате да се повлечете. Ако го притиснете копчето ‘` Измени '’ десно од тоа поле, можете да ги промените не само гранките, туку и која вилушка.
Овде можете прилично лесно да одредите за да ја споите вашата нова гранка во друго барање за повлекување или друга вилушка на проектот.
Цели и известувања
GitHub, исто така, има прилично убав систем за известувања изграден во тоа што може да ни се најде кога имате прашања или ви требаат повратни информации од одредени поединци или тимови.
Во секој коментар можете да почнете да пишувате знак @
и ќе започне автоматски да се заврши со имињата и корисничките имиња на луѓе кои се соработници или соработници во проектот.
Можете исто така да споменете корисник кој не е во тоа паѓачко мени, но често автокомплетирот може да го направи побрз.
Откако ќе го објавите коментар со корисничко име, тој корисник ќе биде известен. Ова значи дека ова може да биде навистина ефикасен начин за повлекување на луѓето во разговорите, наместо да ги прави анкетите. Многу често во барањата за повлекување на GitHub луѓето ќе се повлечат во други луѓе во нивните тимови или во нивната компанија за да ги разгледаат прашањата за издавање или повлекување.
Ако некој се споменува на барање за повлекување или проблем, тие ќе бидат "претплатени" на него и ќе продолжат да добиваат известувања секогаш кога ќе се случи некоја активност на неа. Исто така, ќе се претплатите на нешто ако сте го отвориле, ако го гледате складиштето или ако коментирате за нешто. Доколку повеќе не сакате да добивате известувања, на копчето "Отпишување" на страницата можете да кликнете за да престанете да добивате ажурирања на неа.
Страница за известувања
Кога ги споменуваме "известувањата" тука во однос на GitHub, ние подразбираме специфичен начин на кој GitHub се обидува да стапи во контакт со вас кога се случуваат настани и постојат неколку различни начини на кои можете да ги конфигурирате. Ако одите во табулаторот "Известување центар" од страницата со поставки, можете да видите некои од опциите кои ги имате.
Двата избори се да добијат известувања преку "Email" и над "Веб" и можете да изберете или, ниту за двете, кога активно учествувате во нештата и за активностите во складиштата што ги гледате.
Веб известувања
Веб известувањата постојат само на GitHub и можете да ги проверите само на GitHub. Ако ја изберете оваа опција во вашите претпочитани поставки и ќе се активира известување за вас, ќе видите мала сина точка над вашата икона за известувања на врвот на вашиот екран како што се гледа во << _ not_center >>.
Ако кликнете на тоа, ќе видите листа на сите предмети за кои сте известувани, групирани според проект. Можете да филтрирате за известувања за одреден проект со кликнување на неговото име во левата страна лента. Можете исто така да го потврдите известувањето со кликање на иконата за знаци покрај известувањето или потврдување на сите известувања во проект со кликнување на белешка на врвот на групата. Исто така, постои копче за неми веднаш до секоја ознака за проверка која можете да кликнете за да не примате дополнителни известувања за таа ставка.
Сите овие алатки се многу корисни за ракување со голем број на известувања. Многу корисници на енергија од GitHub едноставно ќе ги исклучат известувањата за е-пошта и ќе управуваат со сите нивни известувања преку овој екран.
Известувања за е-пошта
Е-пошта известувања се на друг начин со кој можете да се справите со известувања преку GitHub. Ако го вклучите ова, ќе добивате е-пораки за секое известување. Видовме пример за тоа во << _ email_notification >> и << _ email_pr >>. Е-пораките, исто така, ќе бидат наведуваат правилно, што е убаво ако користите е-пошта клиент.
Постои, исто така, фер износ на метаподатоци вградени во насловите на пораките што ги испраќа GitHub, што може навистина да биде корисно за поставување на сопствени филтри и правила.
На пример, ако ги погледнеме актуелните заглавија на е-пошта испратени до Тони во е-поштата прикажана во << _ email_pr >>, меѓу испратените информации ќе ги видиме следните:
To: tonychacon/fade <fade@noreply.github.com>
Message-ID: <tonychacon/fade/pull/1@github.com>
Subject: [fade] Wait longer to see the dimming effect better (#1)
X-GitHub-Recipient: tonychacon
List-ID: tonychacon/fade <fade.tonychacon.github.com>
List-Archive: https://github.com/tonychacon/fade
List-Post: <mailto:reply+i-4XXX@reply.github.com>
List-Unsubscribe: <mailto:unsub+i-XXX@reply.github.com>,...
X-GitHub-Recipient-Address: tchacon@example.com
Тука има неколку интересни работи.
Ако сакате да ги означите или пренасочите е-пораките до овој конкретен проект или дури и барањето за повлекување, информациите во Message-ID
ви ги даваат сите податоци во` <user> / <project> / <type> / <id> формат.
Ако ова беше проблем, на пример, полето <тип>
би било ‘` прашања ’, наместо `` повлече '.
Полињата List-Post
и` List-Unsubscribe` значи дека ако имате клиент-пошта што ги разбира тие, можете лесно да објавувате во листата или "Отпиши" од низата.
Тоа би било во суштина исто како и кликнувањето на копчето ‘` неми ’ на веб-верзијата на известувањето или ,, Отпишување ' на самата страница за издавање или потпишување.
Исто така вреди да се напомене дека ако имате овозможено и е-мејл и веб известувања и ја читате верзијата за е-пошта на известувањето, веб-верзијата ќе биде означена и како прочитана, ако имате слики дозволени во вашиот клиент за пошта.