Git
Chapters ▾ 2nd Edition

2.5 Основите на Git - Working with Remotes

Working with Remotes

За да може да соработувате во било кој проект на Git, треба да знаете како да управувате со вашите далечински складишта. Далечински репозиториуми се верзии на вашиот проект, кои се хостирани на интернет или мрежа некаде. Можете да имате неколку од нив, од кои секоја генерално е или само за читање или за читање / запишување за вас. Соработката со други вклучува управување со овие оддалечени складишта и притискање и влечење на податоци до и од нив кога треба да ја споделите работата. Управувањето со оддалечените складишта вклучува познавање како да се додадат далечински складишта, да се отстранат далечински управувачи кои повеќе не се валидни, да управуваат со разни оддалечени гранки и да ги дефинираат како да се следат или не и повеќе. Во овој дел, ние ќе ги покриеме некои од овие вештини за далечинско управување.

Note
Remote repositories can be on your local machine.

Сосема е можно дека можете да работите со "remote"(далечинско) складиште кое всушност е на истиот домаќин. Зборот “remote” не значи дека складиштето е на друго место на мрежата или на интернет, само дека е на друго место. Работата со такво оддалечен складиште би ги вклучила сите стандардни операции за туркање, влечење и преземање, како и со било кој друг далечински управувач.

Showing Your Remotes

За да видите кои оддалечени сервери сте конфигурирале, можете да ја извршите командата git remote '.(((git commands, remote))) Ги наведува кратенките за секоја оддалечена рачка што сте ја навеле. Ако сте го клонирале вашето складиште, треба барем да видите `origin - тоа е стандардното име Git дава на серверот што го клонирате од:

$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin

Исто така можете да наведете -v, со што ќе ги прикажете URL-то што ги зачувал Git за краткото име кое се користи при читање и пишување на тој далечински управувач:

$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)

Ако имате повеќе од еден далечински управувач, командата ги наведува сите. На пример, складиште со повеќе далечински управувачи за работа со неколку соработници може да изгледа вака.

$ cd grit
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
koke      git://github.com/koke/grit.git (fetch)
koke      git://github.com/koke/grit.git (push)
origin    git@github.com:mojombo/grit.git (fetch)
origin    git@github.com:mojombo/grit.git (push)

Ова значи дека можеме лесно да ги привлечеме прилозите од кој било од овие корисници. Можеме дополнително да имаме дозвола да извршиме притисок врз едно или повеќе од овие, иако ние не можеме да го кажеме тоа тука.

Забележете дека овие далечински управувачи користат разни протоколи; ние ќе покриеме повеќе за ова во Добивање на Git на сервер.

Додавање далечински репозиториуми

Ние споменавме и дадовме неколку демонстрации за тоа како командата git clone имплицитно го додава далечинскиот управувач` потекло` за вас. Еве како експлицитно да додадете нов далечински управувач. За да додадете ново далечинско Git складиште како кратко име можете лесно да се повикате, извршете git remote add <shortname> <url>:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)
pb	https://github.com/paulboone/ticgit (fetch)
pb	https://github.com/paulboone/ticgit (push)

Сега можете да ја користите низата pb на командната линија наместо целата URL. На пример, ако сакате да добиете сите информации што ги има Пол, но дека сеуште не сте во вашето складиште, можете да стартувате git fetch pb:

$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

Главната гранка на Павле сега е достапна локално како pb / master - можете да ја споите во една од вашите гранки, или можете да проверите локална гранка во тој момент ако сакате да ја испитате. (Ние ќе одиме над она што гранки се и како да ги користите во многу повеќе детали во Гранење во Git.)

Преземање и влечење од Вашите дистанции

Како што само видовте, за да добиете податоци од оддалечените проекти, можете да го стартувате:

$ git fetch <remote>

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

Ако клонирате складиште, командата автоматски го додава тоа далечинско складиште под името "origin". Значи, git fetch origin ја зема секоја нова работа што е притиснат на тој сервер, бидејќи сте го клонирале (или последново го превзеле). Важно е да се напомене дека командата git fetch само ги презема податоците во вашето локално складиште - не автоматски се спојува со некоја од вашите дела или го модифицира она на што работи во моментов. Треба да го споите рачно во вашата работа кога ќе бидете подготвени.

Ако вашата актуелна гранка е поставена за да се следи оддалечената гранка (за повеќе информации погледнете го следниот дел и Гранење во Git), можете да ја користите командата git pull за автоматски да донесат и потоа спојте ја таа далечна гранка во вашата актуелна гранка. Ова може да биде полесен или поудобен работен процес за вас; и по дифолт, командата git clone автоматски ја поставува вашата локална господарска гранка да ја следи оддалечената господарска гранка (или што и да е позната како стандардна гранка) на серверот од кој сте клонирани. Извршувањето git pull генерално ги генерира податоците од серверот што првично го клонираа и автоматски се обидува да го спои во кодот на кој работите во моментов.

Притискање до Вашите дистанции

Кога го имате вашиот проект во точка што сакате да ја споделите, мора да го притиснете нагоре по течението. Командата за ова е едноставна: git push <origin> <branch>. Ако сакате да го притиснете вашиот господар филијала на вашиот "origin" сервер (повторно, клонирањето обично ги поставува и двете од тие имиња за вас автоматски), тогаш можете да го извршите ова за да извршите притисок врз било какви обврски што сте ги направиле назад до серверот:

$ git push origin master

Оваа команда работи само ако сте клонирани од сервер на кој имате пристап за запишување и ако никој во меѓувреме не го турна. Ако вие и некој друг клонирате во исто време и тие ќе го потиснете нагоре, а потоа ќе притиснете нагоре, вашиот притисок со право ќе биде одбиен. Ќе мора прво да ја донесам нивната работа и да ја вклучите во твое, пред да ви биде дозволено да им помогнам. Видете Гранење во Git за подетални информации за тоа како да им помогнам на оддалечените сервери.

Инспекција на далечински управувач

Ако сакате да видите повеќе информации за одреден далечински управувач, можете да ја користите командата git remote show <remote> Ако ја извршите оваа команда со одредено кратко име, како што е "origin", добивате нешто вака:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

Го наведува URL-то за далечинското складиште, како и информации за филијала за следење. Командата ви помага да ви кажам дека ако сте на главната гранка и ја стартувате git pull, таа автоматски ќе се спои во главната гранка на далечинскиот управувач откако ќе ги преземе сите далечински референци. Исто така ги набројува сите далечински референци што ги повлече.

Тоа е едноставен пример со кој најверојатно ќе наидете. Меѓутоа, кога повеќе го користите Git, може да видите многу повеќе информации од `git remote show ':

$ git remote show origin
* remote origin
  URL: https://github.com/my-org/complex-project
  Fetch URL: https://github.com/my-org/complex-project
  Push  URL: https://github.com/my-org/complex-project
  HEAD branch: master
  Remote branches:
    master                           tracked
    dev-branch                       tracked
    markdown-strip                   tracked
    issue-43                         new (next fetch will store in remotes/origin)
    issue-45                         new (next fetch will store in remotes/origin)
    refs/remotes/origin/issue-11     stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    dev-branch merges with remote dev-branch
    master     merges with remote master
  Local refs configured for 'git push':
    dev-branch                     pushes to dev-branch                     (up to date)
    markdown-strip                 pushes to markdown-strip                 (up to date)
    master                         pushes to master                         (up to date)

Оваа команда покажува која гранка автоматски се турка кога ќе стартувате git push додека на одредени гранки. Таа исто така ви покажува кои оддалечени гранки на серверот што сеуште не ги имате, кои оддалечени гранки имате, кои сте ги отстраниле од серверот, и повеќе локални гранки кои можат автоматски да се спојат со нивната филијала за следење на далечина, кога ќе извршите ` git pull`.

Преименување и отстранување на дистанци

Може да го стартувате git далечинското преименување за да го промените краткото име на далечинскиот управувач. На пример, ако сакате да го преименувате pb во` paul`, можете да го сторите тоа со git remote rename:

$ git remote rename pb paul
$ git remote
origin
paul

Вреди да се спомене дека ова ги менува и сите имиња на филијали за далечинско следење. Она што се користи за референцирање на pb/master сега е во paul/master.

Ако сакате да го отстраните далечинскиот управувач поради некоја причина - сте го преместиле серверот или повеќе не користите одредено огледало, или можеби соработникот не придонесува повеќе - можете да користите "git remote remove" или "git remote rm`:

$ git remote remove paul
$ git remote
origin

Откако ќе го избришете упатувањето на далечинскиот управувач на овој начин, сите филијали за далечинско следење и поставките за конфигурација поврзани со тој далечински управувач исто така се бришат.