Czy istnieje sposób na skonfigurowanie repozytorium Git hosta w taki sposób, aby domyślnie git pull
używany --rebase
był dowolny z jego (lokalnych) klonów ? Przeszukując Przepełnienie stosu, dowiedziałem się o tym branch.autosetuprebase
, ale trzeba go skonfigurować indywidualnie dla każdego klonu.
Moja przepływ projekt jest ustawiona taka, że pull
ten develop
oddział przed merge
ing gałąź funkcji do niego. To pull
prawie zawsze używa --rebase
, więc próbuję dowiedzieć się, czy może to być ustawienie domyślne.
Odpowiedzi:
Istnieją teraz 3 różne poziomy konfiguracji domyślnego zachowania ściągania. Od najbardziej ogólnych do najbardziej drobnoziarnistych są to:
1.
pull.rebase
Ustawienie tego na
true
oznacza, żegit pull
zawsze jest równoważnegit pull --rebase
(chyba żebranch.<branchname>.rebase
jest to wyraźnie ustawione nafalse
). Można to również ustawić dla repozytorium lub globalnie.2)
branch.autosetuprebase
Ustawienie tej wartości
always
oznacza, że za każdym razem, gdy tworzona jest gałąź śledzenia, zostanie dla niej utworzony wpis konfiguracji podobny do poniższego. Dla dokładniejszego szczegółową kontrolę, może to być również ustawionynever
,local
alboremote
i może być ustawiony za repozytorium lub globalnie. Zobaczgit config --help
dalsze szczegóły.3)
branch.<branchname>.rebase
Ustawienie tej wartości
true
oznacza, że ta konkretna gałąź zawsze będzie pobierać od swojego źródła poprzez zmianę zasad, chyba że zostaniegit pull --no-rebase
to użyte jawnie.Wniosek
Więc chociaż nie możesz zmienić domyślnego zachowania dla wszystkich przyszłych klonów repozytorium, możesz zmienić domyślne dla wszystkich repozytoriów bieżącego użytkownika (istniejących i przyszłych) za pośrednictwem
git config --global pull.rebase true
.źródło
~/.gitconfig
, co oznacza, że każdy programista, który klonuje repozytorium hosta, musiałby uruchomić polecenie. Nie narzekam na twoje rozwiązanie. To jest dobre, chcę tylko potwierdzić, że poprawnie zrozumiałem twój punkt widzenia.Co powiesz na
To powie gitowi, by zawsze ciągnął z rebase.
źródło
--bool
, to nie jest konieczneOdpowiedź brzmi nie.
Nie ma sposobu na skonfigurowanie zdalnego repozytorium, aby każdy, kto go klonuje, miał domyślne zachowanie
git pull
zmienione.Możesz jednak ustawić hak po stronie serwera, który sprawdza, czy nikt nie popycha zatwierdzeń scalania ( być może coś takiego ).
Istnieją również opcje konfiguracji, które mogą Cię zainteresować. Wszyscy programiści, którzy sklonują się ze zdalnego repozytorium, będą musieli ustawić go samodzielnie.
1. Opcja
branch.<name>.rebase
Możesz skonfigurować oddział lokalny, aby zawsze używał
--rebase
, tak jak to, zastępując<name>
nazwę oddziału:Po uruchomieniu to na
master
, namaster
sekcję.git/config
wyglądał następująco:2. Opcja
branch.autosetuprebase
Uruchomienie poprzedniej komendy config dla każdej gałęzi Git może być kłopotliwe, więc możesz skonfigurować Git, aby automatycznie konfigurował ją dla każdej nowej gałęzi:
(Można również określić
never
,remote
ilocal
zobaczman git-config
szczegóły.)Bez tej
--global
opcji konfiguracja jest zapisywana.git/config
i dotyczy to tylko bieżącego repozytorium. Za--global
pomocą konfiguracja jest zapisywana~/.gitconfig
i dotyczy to każdego nieskonfigurowanego repozytorium.Ta opcja nie wpływa na już istniejące oddziały.
3. Opcja
pull.rebase
(Możesz również dać taką
--global
opcję).Jeśli ta opcja jest prawdziwa, uruchamianie
git pull
jest równoważnegit pull --rebase
, chybabranch.<name>.rebase
że zostało ustawione nafalse
.źródło
To sprawia, że
--rebase
opcja ta jest domyślna podczas wydawaniagit pull
w danym oddziale.@Flimm, musiałem dodać,
true
aby pierwsza opcja działała.Tak więc poprawna składnia to:
Aby uruchomić to polecenie w
develop
oddziale:A teraz
develop
sekcja.git/config
wygląda następująco:źródło
Obecnie nie ma możliwości ustawienia domyślnych zasad dla repozytorium.
Jeśli chcesz go dla siebie i używasz przynajmniej git 1.7.9, możesz globalnie ustawić
pull.rebase
konfigurację w następujący sposób:Ale będziesz musiał zrobić na każdej maszynie. Jedną z opcji może być skonfigurowanie domyślnego domowego szablonu / szkieletu użytkownika za pomocą tej opcji. Użytkownicy mogą jednak zmienić tę opcję.
Jeśli nie chcesz łączenia, możesz zdefiniować przechwytywanie po stronie serwera, aby odrzucać wypychania z łączeniami.
Dla twojej wiedzy jest to dokumentacja źródłowa pull.rebase:
źródło