Git pokazują zdalne gałęzie

Git pokazują zdalne gałęzie
Zdolność Git do łatwego tworzenia gałęzi jest świetną cechą. Jednak w przypadku lokalnych i odległych oddziałów może się to trochę skomplikować. Ustawmy sytuację, w której zamierzamy stworzyć własne repozytorium git, które będzie zachowywać się jak zdalne repozytorium. Następnie utworzymy i popełniamy oddziały do ​​naszego zdalnego repozytorium z Project_Source. Następnie sklonujemy zdalne repozytorium i bawić się gałęziami. Ćwiczenie powinno również dać ci wyobrażenie o tym, jak działają zdalne repozytoria, takie jak Github i Bitbucket. Możesz to wizualizować w następujący sposób:

Zacznijmy od repozytorium GIT. Utworzymy folder o nazwie Project.git i zainicjuj go, aby stać się zdalnym repozytorium:

Projekt $ mkdir.git
$ CD Project.git/
$ git init - -bere
Zainicjowane puste repozytorium Git w/Users/Zakh_Eecs/_Work/Learngit/git_remote_repository/
projekt.git/

Teraz przejdź do nowej lokalizacji, w której możesz utworzyć czysty folder. Utwórz folder Project_Source i zainicjuj go dla GIT:

$ mkdir projekt_source
$ CD Project_Source
$ git init
Zainicjowane puste repozytorium Git/Users/Zakh_Eecs/_Work/Learngit/git_branching_source/
projekt_source/.git/
$ Touch Readme.tekst
$ git add -a
$ git commit -m „początkowe zatwierdzenie”
[Master (root-commit) 176134f] początkowe zatwierdzenie
1 Zmieniony plik, 0 wstawek (+), 0 delecji (-)
Utwórz tryb 100644 README.tekst

Project_SetUp to katalog git z readMe.plik txt. Nie jest to jednak podłączone do naszego zdalnego repozytorium. Skonfigurujmy projekt.git, aby być zdalnym repozytorium dla projektu_source. Możemy to osiągnąć poprzez następujące polecenie:

$ git zdalny dodaj pochodzenie/użytkowe/zaecs/_work/uczenia sięgit/git_remote_repository/projekt.git
$ git push pochodzenie mistrz
Liczenie obiektów: 3, gotowe.
Pisanie obiektów: 100% (3/3), 213 bajtów | 0 bajtów/s, gotowe.
Razem 3 (Delta 0), ponownie użyty 0 (Delta 0)
To/Users/Zakh_Eecs/_Work/Learngit/git_remote_repository/projekt.git
* [Nowa gałąź] Master -> Master

Dzięki poleceniu GIT Remote Add ADD, stworzyliśmy połączenie między projektem.Git i Project_Source. Dzięki komendzie GIT Push Origin Master popchnęliśmy naszą gałąź do zdalnego repozytorium.

Sprawdźmy nasze gałęzie (wciąż w folderze Project_Source):

$ git oddział
* gospodarz
$ git oddział -r
Origin/Master
$ git oddział -a
* gospodarz
Remotes/Origin/Master

Pierwsze polecenie pokazuje tylko oddział lokalny. Opcja -r pokazuje zdalną gałąź. A opcja -a pokazuje zarówno lokalny, jak i zdalny.

Utwórzmy kilka oddziałów w naszym katalogu roboczym:

Rozwój oddziału $ git
$ git oddział hotfix
$ git oddział eksperymentalny
$ git oddział -a
rozwój
eksperymentalny
Hotfix
* gospodarz
Remotes/Origin/Master

Stworzyliśmy gałęzie o nazwie Development, Hotfix i eksperymentalne. Pojawiają się na naszej liście oddziałów lokalnych. Ale w pilotach/pochodzeniu istnieje tylko gałąź główna, ponieważ jest to jedyna, którą popchnęliśmy. Gwiazda (*) Master oznacza, że ​​wciąż jesteśmy w lokalnym oddziale Master. Wejdźmy do oddziału rozwoju, poprowadź zmiany i popchnij te zmiany do zdalnego repozytorium.

$ Git Checkout Development
Przełączony na „rozwój” oddziału
$ echo abc> readme.tekst
$ git add -a
$ git commit -m „Zmodyfikowana oddział rozwoju”
[Rozwój DD9933E] Zmodyfikowana oddział rozwoju
1 Zmieniony plik, 1 wstawienie (+)
$ GIT PUSH ORIGINICE
Liczenie obiektów: 3, gotowe.
Pisanie obiektów: 100% (3/3), 257 bajtów | 0 bajtów/s, gotowe.
Razem 3 (Delta 0), ponownie użyty 0 (Delta 0)
To/Users/Zakh_Eecs/_Work/Learngit/git_remote_repository/projekt.git
* [Nowy oddział] Rozwój -> Rozwój

Sprawdźmy teraz wszystkie gałęzie:

$ git oddział -a
* rozwój
eksperymentalny
Hotfix
gospodarz
piloty/pochodzenie/rozwój
Remotes/Origin/Master

Widzimy, że jesteśmy w lokalnym oddziale rozwoju, ale istnieje również oddział zdalny. Kiedy popchnęliśmy nasze zmiany w rozwój GIT Push Origin, stworzył oddział rozwoju w pilotach/pochodzeniu.

Wyjdźmy teraz z projektu_source i znajdź świeże miejsce, w którym możemy mieć nowy folder. Tutaj sklonujemy zdalne repozytorium za pomocą następującego polecenia:

$ git Clone/Users/Zakh_Eecs/_Work/Learngit/git_remote_repository/projekt.git
Klonowanie w „Project”…
zrobione.

Sklonowaliśmy nową kopię o nazwie Project z projektu.git. Wejdź do folderu projektu i sprawdź gałęzie:

$ CD Project
$ git oddział
* gospodarz

Kiedy Git tworzy początkowy klon ze zdalnego repozytorium, dostaje tylko gałąź główną. Jeśli używamy opcji -a, widzimy:

$ git oddział -a
* gospodarz
Remotes/Origin/Head -> Origin/Master
piloty/pochodzenie/rozwój
Remotes/Origin/Master

Zauważ, że nie ma lokalnego oddziału rozwoju. Ponadto nigdy nie pchaliśmy gałęzi Hotfix i eksperymentalnych od Project_Source do Project.git, więc ich nie widzimy. Zdalne repozytorium ma gałęzie główne i programistyczne (piloty/pochodzenie/głowa -> pochodzenie/mistrz nie jest gałęzią, po prostu mówi ci, gdzie wskazuje głowa).

Wprowadźmy gałęznę rozwoju do naszego środowiska pracy:

$ git fetch -wszystko
Pobieranie pochodzenia
$ Git Checkout Development
Rozwój oddziału ustanowiony w celu śledzenia zdalnego rozwoju oddziału z pochodzenia.
Przeszedł na „rozwój” nowego oddziału

Jeśli używasz starszej wersji GIT, być może będziesz musiał użyć:

$ Git Checkout Development pochodzenie/rozwój

Teraz, jeśli użyjemy polecenia gałęzi, otrzymujemy:

$ git oddział -a
* rozwój
gospodarz
Remotes/Origin/Head -> Origin/Master
piloty/pochodzenie/rozwój
Remotes/Origin/Master

Możemy wprowadzić zmiany w gałęzi rozwoju, popełnić zmiany, a następnie naciskać za pomocą komendy rozwoju pochodzenia git push.

Podsumowując

Kiedy pracujesz z GitHub i Bitbucket, możesz użyć linku HTTPS lub SSH, aby połączyć się z zdalnym repozytorium. Więc ustawisz swoje pochodzenie na te linki. Ale zasady odległej gałęzi są takie same, jak opisano tutaj.

Dalsze badanie:

  • https: // git-scm.COM/DOCS/GIT GRANCH
  • https: // git-scm.com/book/en/v2/git-on-the-server ustawiony w górę
  • https: // pomoc.github.com/artykuły/dodanie-an-is-is-is-is-is-is-github-używające-liniowe/
  • https: // pomoc.github.com/artykuły/pchanie do remote/