Nie zawsze możesz utworzyć gałąź lub wyciągnąć istniejącą gałąź i odepchnąć do niej, ponieważ nie jesteś zarejestrowany jako współpracownik dla tego konkretnego projektu.
Forking to tylko klon po stronie serwera GitHub :
- bez możliwości bezpośredniego odepchnięcia
- z dodaną funkcją kolejki rozwidlenia do zarządzania żądaniem scalenia
Widelec jest zsynchronizowany z oryginalnym projektem poprzez:
- dodanie oryginalnego projektu jako pilota
- pobieranie regularnie z tego oryginalnego projektu
- oprzyj swój obecny rozwój na gałęzi zainteresowań, którą zaktualizowałeś z tego pobrania.
Rebase pozwala upewnić się, że zmiany są proste (bez konfliktu scalania do obsługi), dzięki czemu prośba o wyciągnięcie jest łatwiejsza, gdy chcesz, aby opiekun oryginalnego projektu uwzględnił Twoje łaty w swoim projekcie.
Celem jest naprawdę umożliwienie współpracy, nawet jeśli bezpośredni udział nie zawsze jest możliwy.
Fakt, że klonujesz po stronie GitHub oznacza, że masz teraz dwa „centralne” repozytorium („centralne” jako „widoczne dla kilku współpracowników).
Jeśli możesz dodać je bezpośrednio jako współpracownika dla jednego projektu, nie musisz zarządzać innym jeden z widelcem.
Proces scalania byłby mniej więcej taki sam, ale z dodatkowym poziomem pośrednictwa (naciśnij najpierw na widelec, a następnie poproś o pociągnięcie, z ryzykiem ewolucji oryginalnego repozytorium, co spowoduje, że twoje połączenia do przodu nie będą już przewijać do przodu) .
Oznacza to, że prawidłowym obiegiem pracy jest git pull --rebase upstream
(bazowanie na pracy nad nowymi zatwierdzeniami od początku), a następnie git push --force origin
, w celu przepisania historii w taki sposób, że własne zatwierdzenia są zawsze na początku zatwierdzeń z oryginalnego (wcześniejszego) repozytorium .
Zobacz też:
Oto różnice wysokiego poziomu:
Forking
Plusy
Cons
Rozgałęzienie
Plusy
Cons
źródło
write
uprawnień do repozytorium.Ma to związek z ogólnym przepływem pracy Git. Jest mało prawdopodobne, abyś mógł przepchnąć bezpośrednio do repozytorium głównego projektu. Nie jestem pewien, czy repozytorium projektu GitHub obsługuje kontrolę dostępu opartą na gałęzi, ponieważ nie chciałbyś na przykład udzielać nikomu pozwolenia na przekazywanie do gałęzi master.
Ogólny wzór jest następujący:
Bez tego dość często zdarza się, że w projektach publicznych ktoś może bezpośrednio popchnąć własne zobowiązania.
źródło
Forking tworzy całkowicie nowe repozytorium z istniejącego repozytorium (po prostu wykonując klon git na gitHub / bitbucket)
Strategia rozgałęzienia tworzy nowy oddział w istniejącym / działającym repozytorium
Bardziej szczegółowo: - W projektach typu open source to właściciel repozytorium decyduje, kto może przekazywać dane do repozytorium. Jednak idea open source polega na tym, że każdy może wnieść swój wkład w projekt.
Ten problem rozwiązują rozwidlenia: za każdym razem, gdy programista chce zmienić coś w projekcie open source, nie klonuje bezpośrednio oficjalnego repozytorium. Zamiast tego rozwidlają go, aby utworzyć kopię. Po zakończeniu pracy wysyłają żądanie ściągnięcia, aby właściciel repozytorium mógł przejrzeć zmiany i zdecydować, czy połączyć je ze swoim projektem.
U podstaw rozwidlenie jest podobne do rozgałęziania funkcji, ale zamiast tworzenia rozgałęzień wykonuje się rozwidlenie repozytorium, a zamiast wykonywania żądania scalenia tworzysz żądanie ściągnięcia.
Poniższe linki przedstawiają różnicę w dobrze wyjaśniony sposób:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html
źródło