Chciałbym poznać różnice między zrobieniem Fork projektu i zrobieniem clone
z niego.
Czy mogę wysyłać żądania ściągania za pośrednictwem GitHub, tylko jeśli rozwidliłem projekt?
Chciałbym poznać różnice między zrobieniem Fork projektu i zrobieniem clone
z niego.
Czy mogę wysyłać żądania ściągania za pośrednictwem GitHub, tylko jeśli rozwidliłem projekt?
Odpowiedzi:
Zasadniczo tak. To fork
tylko prośba do GitHub o sklonowanie projektu i zarejestrowanie go pod Twoją nazwą użytkownika ; GitHub śledzi również relacje między dwoma repozytoriami, dzięki czemu można wizualizować zatwierdzenia i przeciągnięcia między dwoma projektami (i innymi widelcami).
Nadal możesz poprosić, aby ludzie wyciągnęli z twojego sklonowanego repozytorium, nawet jeśli go nie używasz fork
- ale sam musiałbyś poradzić sobie z publicznym udostępnieniem go. Lub wyślij łatki dla programistów (zobacz git format-patch
), które mogą zastosować do swoich drzew.
git pull
. Widelec przyjmuje wiele poleceń. I nic dziwnego, że prawie każdy widelec, na który patrzę, jest nieaktualny. Widelce są jak problem z repozytorium Maven na sterydach. Zamiast jednego nieaktualnego repozytorium (Maven), jest ich tysiące (Git).
git pull
aby nadal istniała jakaś relacja. Jeśli sklonowałeś całą kopię na swoim własnym komputerze lokalnym i odłączyłeś się od oryginalnego repozytorium.
Kiedy mówisz, że tworzysz repozytorium, w zasadzie tworzysz kopię repozytorium pod swoim identyfikatorem GitHub. Należy przede wszystkim zauważyć, że wszelkie zmiany dokonane w oryginalnym repozytorium zostaną odzwierciedlone z powrotem w twoich rozwidlonych repozytoriach (musisz pobrać i zmienić bazę). Jeśli jednak wprowadzisz jakiekolwiek zmiany w rozwidlonym repozytorium, będziesz musiał jawnie utworzyć żądanie ściągnięcia do oryginalnego repozytorium. Jeśli żądanie ściągnięcia zostanie zatwierdzone przez administratora oryginalnego repozytorium , wówczas zmiany zostaną zatwierdzone / scalone z istniejącą oryginalną bazą kodu. Do tego czasu zmiany będą widoczne tylko w rozwidlonej kopii .
W skrócie:
Model Fork & Pull umożliwia każdemu rozwidlenie istniejącego repozytorium i wypchnięcie zmian do osobistego widelca bez konieczności udzielania dostępu do repozytorium źródłowego. Następnie opiekun projektu musi wprowadzić zmiany do repozytorium źródłowego.
Zauważ, że po rozwidleniu możesz sklonować swoje repozytorium (to pod twoim imieniem) lokalnie na twoim komputerze. Wprowadź zmiany i wypchnij je do rozwidlonego repozytorium. Jednak, aby odzwierciedlić zmiany w oryginalnym repozytorium, żądanie ściągnięcia musi zostać zatwierdzone.
Kilka innych interesujących dyskusji -
Możesz zatwierdzić swoje repozytorium online (lub zatwierdzić repozytorium lokalne, a następnie wypchnąć repozytorium online), a następnie wysłać żądanie ściągnięcia.
Kierownik projektu może to zaakceptować, aby uzyskać zmiany w swojej głównej wersji online.
Klon to miejsce, w którym masz odpowiednią duplikację i separację między dwiema (być może różnymi) wersjami repozytorium. Po zmianie jednego repozytorium nowa zawartość musi zostać aktywnie skopiowana do drugiego repozytorium za pomocą polecenia push. Wprowadzono zmiany w drugim repozytorium.
Po rozwidleniu repozytorium na serwerze nie ma potrzeby powielania treści, ponieważ oba repozytoria będą używać tej samej zawartości [obiektu stałego] z tego samego serwera. „Sztuczka” polega na zarządzaniu różnymi punktami widzenia użytkownika, aby każdy użytkownik wierzył, że ma pełną osobistą kopię repozytorium. Przesunięcia i pobrania między widelcami to po prostu aktualizacja wskaźników użytkownika.
Na niższym poziomie git robi to samo wewnętrznie. Jeśli masz trzy różne pliki, z których każdy zawiera Hello World
, a następnie git po prostu „rozwidla” jedną kopię blobu Hello World i oferuje go w każdym z trzech miejsc, zgodnie z wymaganiami.
Możliwość rozwidlenia na serwerze oznacza, że duży limit pamięci Github nie jest tak duży średnio, ponieważ każdy organ ma jedno bazowe repozytorium.
W skrócie, Forking jest prawdopodobnie taki sam jak „klonowanie pod twoim identyfikatorem / profilem GitHub”. Widelec jest zawsze lepszy niż klon, z kilkoma wyjątkami, oczywiście. Rozwidlone repozytorium jest zawsze monitorowane / porównywane z oryginalnym repozytorium, w przeciwieństwie do sklonowanego repozytorium. Umożliwia to śledzenie zmian, inicjowanie żądań ściągania, a także ręczne synchronizowanie zmian dokonanych w oryginalnym repozytorium z rozwidlonym.
Chociaż odpowiedź @ AniketThakur jest bardzo dobra. Nikt jeszcze nie odpowiedział na następujące pytanie.
Czy mogę wysyłać żądania ściągania za pośrednictwem GitHub, tylko jeśli rozwidliłem projekt?
Nie. Jeśli jesteś współtwórcą repozytorium, możesz: Utworzyć lokalnego klona. Zrób lokalny oddział. Dodaj zatwierdzenia do tego oddziału. Wciśnij lokalną gałąź z powrotem do github (tworząc w tym czasie zdalną gałąź). Złóż wniosek ściągania z prośbą o połączenie tej gałęzi z gałęzią główną (lub dowolną inną).
Jeśli zrobiłeś to, o czym pytał pytający (zapomniałeś rozwidlić i po prostu lokalnie sklonowałeś repozytorium, dokonałeś zmian i teraz musisz wydać żądanie ściągnięcia), możesz wrócić na ścieżkę:
Inną dziwną subtelną różnicą w GitHub jest to, że zmiany w widelcach nie są liczone w dzienniku aktywności, dopóki nie zostaną wprowadzone do oryginalnego repozytorium. Co więcej, aby zmienić widelec w odpowiedni klon, najwyraźniej musisz skontaktować się z obsługą Github.
Od Dlaczego mój wkład się nie wyświetla :
Zobowiązanie zostało wykonane w widelcu
Zobowiązania dokonane w rozwidleniu nie będą wliczane do twoich składek. Aby je policzyć, musisz wykonać jedną z następujących czynności:
Otwórz żądanie ściągnięcia, aby zmiany zostały scalone z repozytorium nadrzędnym. Aby odłączyć widelec i przekształcić go w autonomiczne repozytorium w GitHub, skontaktuj się z pomocą techniczną GitHub . Jeśli widelec ma własne widelce, poinformuj obsługę o tym, czy widły powinny przenieść się z repozytorium do nowej sieci, czy pozostać w bieżącej sieci. Aby uzyskać więcej informacji, zobacz „ Informacje o widelcach ”.