В този урок ще направим следното:
- Създайте отдалечено хранилище
- Създайте локално копие на отдалеченото хранилище
- Създайте два клона в локалното копие
- Натиснете един клон към отдалеченото хранилище
- Изтрийте местните клонове
- Изтрийте отдалечени клонове
Урокът трябва да ви даде цялостно разбиране за процеса на създаване и изтриване на клона, така че имате добра команда за необходимите стъпки, когато трябва да изтриете локален или отдалечен клон.
Да започваме.
1. Създаване на отдалечено хранилище
Нека създадем папка, наречена проект.git и инициализирайте, за да бъде отдалеченото хранилище:
$ mkdir проект.git$ cd проект.git
$ git init -bare
Инициализирано празно Git хранилище в / Users / zak / _work / LearnGIT / git_delete_branch / project.git /
2. Създаване на локално копие на отдалеченото хранилище
На ново място, нека създадем локално копие, наречено project_local на отдалеченото хранилище, използвайки командата клониране.
Забележка: Ако работите с GitHub или BitBucket, ще следвате същия процес, за да клонирате хранилището. В този случай ще имате SSH връзка вместо пълния път до файла, използван тук.
$ git clone / Users / zak / _work / LearnGIT / git_delete_branch / project.git project_localКлониране в 'project_local' ..
предупреждение: Изглежда сте клонирали празно хранилище.
Свършен.
3. Създаване на клонове вътре в локалното копие
Нека първо добавим файл към локалното копие и след това го избутаме в отдалеченото хранилище:
$ cd project_local$ touch ReadMe.текст
$ git add -A
$ git commit -m "Инициализиране на модула"
[master (root-commit) 81eb2a3] Инициализиране на модула
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 ReadMe.текст
$ git push master master
Преброяване на обекти: 3, готово.
Писане на обекти: 100% (3/3), 221 байта | 0 байта / s, готово.
Общо 3 (делта 0), повторно използвана 0 (делта 0)
Към / Users / zak / _work / LearnGIT / git_delete_branch / project.git
* [нов клон] master -> master
В горните команди създадохме файл, наречен ReadMe.txt, добави го към локалното копие, ангажира го към локалното копие и след това прокара промените в отдалеченото хранилище или главния клон на произхода.
Ако проверите клоновете, ще видите главния клон в локалното копие:
$ git клон* майстор
Ако проверите отдалечените клонове, ще видите и главния клон там:
$ git клон -rпроизход / майстор
Съвет: Можете да използвате опцията '-a', за да видите всички клонове в локални и отдалечени хранилища заедно.
$ git клон -a* майстор
дистанционни / произход / главен
Нека създадем два клона, наречени b1 и b2 от главния клон:
$ git клон b1$ git клон b2
Нека проверим дали клоновете са създадени:
$ git клонb1
b2
* майстор
Сега ще направим някои модификации на клоновете:
$ git checkout b1Превключено към клон 'b1'
$ touch клон1.текст
$ git add -A
$ git commit -m "Промяна на клон1"
[b1 a2f488e] Модификация на клон1
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 клон1.текст
$ git checkout b2
Превключено към клон 'b2'
$ touch клон2.текст
$ git add -A
$ git commit -m "Модификация на клон2"
[b2 2abb723] Модификация на клон2
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 клон2.текст
Нека проверим локални и отдалечени състояния на клонове:
$ git клонb1
* b2
майстор
$ git клон -r
произход / майстор
Локално можем да видим, че имаме три клона master, b1 и b2. Но имаме само главния клон в отдалеченото хранилище.
4. Избутване на клонове в отдалечено хранилище
Нека натиснем клон b1 към отдалеченото хранилище:
$ git push origin b1Преброяване на обекти: 2, готово.
Делта компресия с използване на до 4 нишки.
Компресиране на обекти: 100% (2/2), готово.
Писане на обекти: 100% (2/2), 249 байта | 0 байта / s, готово.
Общо 2 (делта 0), повторно използвана 0 (делта 0)
Към / Users / zakh / _work / LearnGIT / git_delete_branch / project.git
* [нов клон] b1 -> b1
Можете да проверите локалните и отдалечени състояния на клонове:
$ git клонb1
* b2
майстор
$ git клон -r
произход / b1
произход / майстор
От горните състояния на клонове можем да видим, че клонът b1 е достъпен и отдалечено.
5. Локално изтриване на клонове
Можете да изтриете клонове локално с опцията -d или -D.
git клон -dНека първо проверим в главния клон, за да можем да изтрием клоните b1 и b2.
$ git checkout masterПревключено към клон „master“
Вашият клон е актуален с 'origin / master'.
Нека първо опитаме опцията -d, за да изтрием клона b1:
$ git клон -d b1грешка: Клонът „b1“ не е напълно обединен.
Ако сте сигурни, че искате да го изтриете, стартирайте 'git клон -D b1'.
Грешката ви казва, че трябва да обедините промените от клон b1. Това е предпазна мярка, за да не загубите по погрешка работата си по клонове. Можете да използвате опцията -D, за да принудите да изтриете сливането. Но в този случай, нека обединим промените от b1 и b2 в master и ги избутаме в отдалеченото хранилище.
$ git merge b1Актуализиране на 81eb2a3 ... a2f488e
Превъртане напред
клон1.txt | 0
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 клон1.текст
$ git merge b2
Обединяване, направено от "рекурсивната" стратегия.
клон2.txt | 0
1 файл е променен, 0 вмъквания (+), 0 изтривания (-)
режим на създаване 100644 клон2.текст
$ git push master master
Преброяване на обекти: 4, готово.
Делта компресия с използване на до 4 нишки.
Компресиране на обекти: 100% (4/4), готово.
Писане на обекти: 100% (4/4), 454 байта | 0 байта / s, готово.
Общо 4 (делта 1), повторно използвана 0 (делта 0)
До / Users / zak / _work / LearnGIT / git_delete_branch / project.git
81eb2a3… 34db496 master -> master
Сега опитайте да изтриете клоновете отново:
$ git клонb1
b2
* майстор
$ git клон -d b1
Изтрит клон b1 (беше a2f488e).
$ git клон -d b2
Изтрит клон b2 (беше 2abb723).
$ git клон
* майстор
Успешно сте изтрили клон b1 и b2 локално.
6. Изтриване на отдалечени клонове
Когато проверявате отдалечените клонове, все още виждате b1 наличен:
$ git клон -rпроизход / b1
произход / майстор
Можете да използвате следната команда, за да изтриете отдалечен клон:
git pushТака че можете да изтриете отдалечения клон b1 със следното:
$ git push origin --delete b1Към / Users / zakh_eecs / _work / LearnGIT / git_delete_branch / project.git
- [изтрит] b1
Сега, ако проверите отдалечените си клонове, вече не трябва да виждате b1:
$ git клон -rпроизход / майстор
Честито! Успешно сте изтрили всички създадени от вас клонове. Практикувайте да правите повече клонове и да ги изтривате, за да овладеете процеса на изтриване на клонове на Git.
Допълнително проучване:
- https: // git-scm.com / book / en / v1 / Git-Branching-What-a-Branch-Is
- https: // git-scm.com / book / en / v2 / Git-Branching-Branches-in-a-Nutshell
- https: // git-scm.com / book / en / v2 / Git-Branching-Basic-Branching-and-Merging