Нека започнем с хранилището на Git. Ще създадем папка, наречена проект.git и го инициализирайте, за да станете отдалеченото хранилище:
$ mkdir проект.git$ cd проект.git /
$ git init --bare
Инициализирано празно хранилище на Git в / Users / zakh_eecs / _work / LearnGIT / git_remote_repository /
проект.git /
Сега отидете на ново място, където можете да създадете чиста папка. Създайте папката project_source и я инициализирайте за Git:
$ mkdir project_source$ cd project_source
$ git init
Инициализирано празно хранилище на Git в / Users / zakh_eecs / _work / LearnGIT / git_branching_source /
проект_източник /.git /
$ touch ReadMe.текст
$ git add -A
$ git commit -m "Първоначален ангажимент"
[master (root-commit) 176134f] Първоначално фиксиране
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 ReadMe.текст
Project_setup е директория на Git с ReadMe.txt файл. Той обаче не е свързан с нашето отдалечено хранилище. Нека създадем проект.git да бъде отдалеченото хранилище за project_source. Можем да постигнем това чрез следната команда:
$ git отдалечено добавяне на произход / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git$ git push master master
Преброяване на обекти: 3, готово.
Писане на обекти: 100% (3/3), 213 байта | 0 байта / s, готово.
Общо 3 (делта 0), повторно използвана 0 (делта 0)
До / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [нов клон] master -> master
С командата git remote add origin създадохме връзката между проекта.git и project_source. С главната команда на git push origin сме преместили нашия главен клон към отдалеченото хранилище.
Нека проверим нашите клонове (все още в папката project_source):
$ git клон* майстор
$ git клон -r
произход / майстор
$ git клон -a
* майстор
дистанционни / произход / главен
Първата команда показва само локалния клон. Опцията -r показва отдалечения клон. А опцията -a показва както локално, така и отдалечено.
Нека създадем няколко клона в нашата работна директория:
$ git развитие на клона$ git клон корекция
$ git клон експериментално
$ git клон -a
развитие
експериментален
актуална корекция
* майстор
дистанционни / произход / главен
Създадохме клонове, наречени разработка, актуални корекции и експериментални. Те се показват в нашия списък с местни клонове. Но в дистанционното управление / произход има само главен клон, защото това е единственото, което натиснахме. Звездата (*) master означава, че все още сме в местния master клон. Нека да влезем в клона на разработката, да извършим промени и да ги изпратим в отдалеченото хранилище.
$ git checkout разработкаПревключено към „развитие“ на клон
$ echo abc> ReadMe.текст
$ git add -A
$ git commit -m "Модифициран клон за разработка"
[разработка dd9933e] Модифициран клон за разработка
1 файл е променен, 1 вмъкване (+)
$ git push развитие на произхода
Преброяване на обекти: 3, готово.
Писане на обекти: 100% (3/3), 257 байта | 0 байта / s, готово.
Общо 3 (делта 0), повторно използвана 0 (делта 0)
До / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [нов клон] развитие -> развитие
Нека проверим всички клонове сега:
$ git клон -a* развитие
експериментален
актуална корекция
майстор
дистанционни / произход / разработка
дистанционни / произход / главен
Виждаме, че сме в местния клон за развитие, но има и отдалечен клон за развитие. Когато натиснахме промените си с разработката на git push origin, тя създаде клона на разработката в отдалечени / произход.
Нека сега да излезем от project_source и да намерим ново място, където да имаме нова папка. Тук ще клонираме отдалеченото хранилище със следната команда:
$ git clone / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.gitКлониране в „проект“ ..
Свършен.
Клонирахме ново копие, наречено проект от проект.git. Влезте в папката на проекта и проверете клоновете:
$ cd проект$ git клон
* майстор
Когато Git направи първоначален клонинг от отдалечено хранилище, той получава само главния клон. Ако използваме опцията -a, виждаме:
$ git клон -a* майстор
дистанционни / произход / HEAD -> произход / главен
дистанционни / произход / разработка
дистанционни / произход / главен
Забележете, че няма клон за местно развитие. Освен това никога не сме премествали актуални корекции и експериментални клонове от project_source към project.git, така че не ги виждаме. Отдалеченото хранилище има главни клонове и клонове за развитие (Remotes / origin / HEAD -> origin / master не е клон, а просто ви казва къде сочи HEAD).
Нека въведем клона за развитие в нашата работна среда:
$ git fetch --allИзвличане на произход
$ git checkout разработка
Развитие на клонове, създадено за проследяване на отдалечено развитие на клонове от произхода.
Преминах към нов клон „развитие“
Ако използвате по-стара версия на Git, може да се наложи да използвате:
$ git checkout произход / разработка на разработкатаСега, ако използваме командата на клона, получаваме:
$ git клон -a* развитие
майстор
дистанционни / произход / HEAD -> произход / главен
дистанционни / произход / разработка
дистанционни / произход / главен
Можем да направим промени в клона на разработката, да извършим промените и след това да го натиснем с помощта на командата за разработка git push origin.
В заключение
Когато работите с GitHub и BitBucket, може да използвате HTTPS или SSH връзка за свързване с отдалеченото хранилище. Така че ще настройвате произхода си към тези връзки. Но принципите на отдалечения клон са същите, както са описани тук.
Допълнително проучване:
- https: // git-scm.com / docs / git-клон
- https: // git-scm.com / book / en / v2 / Git-on-the-the-Server-Setting-Up-the-Server
- https: // помощ.github.com / articles / add-an-existing-project-to-github-using-the-command-line /
- https: // помощ.github.com / articles / push-to-a-remote /