Naprawdę nigdy nie myślę o czasach, w których będę używał git merge
zamiast git rebase
i , a nie chcę mieć zatwierdzenie. Czy jest jakiś sposób, aby skonfigurować git, aby domyślnie mieć szybkie przekazywanie? Fakt, że istnieje opcja --ff
, sugerowałby, że istnieje sposób, ale nie mogę tego znaleźć w dokumentacji.Czy mogę zlecić szybkie przekazywanie dalej domyślnie w git?
Odpowiedz
Tak, istnieje --no-ff
. Możesz skonfigurować opcje scalania dla każdego oddziału, np.
git config branch.master.mergeoptions "--no-ff"
dodaje następujące do pliku $(REPO)/.git/config
:
[branch "master"]
mergeoptions = --no-ff
Przypis: mówienie z mojego doświadczenia wynika, że w końcu znalazł przejście do przodu na starcie był głównie pomocne dla początkujących git - jednak gdy poczujesz, jak przepływy pracy i koncepcje zaczynają tonąć, zdecydowanie nie chcesz zamazywać wykresu logu z tonami bezsensownych "połączonych zdalnych zatwierdzeń typu" blarf ".
Ach, przypuszczam, że wtedy szukałem w niewłaściwym miejscu. Dzięki! –
Uczenie się jest trochę jak wspinaczka górska; ale zamiast zaczynać od małych klifów i wspinać się na trudniejsze, git sprawia, że wspinasz się na tę samą górę raz za razem, tylko za każdym razem spadając na różne wysokości, za każdym razem tak samo zaskoczony, że linia życia nie była przywiązana. – conny
@conny - Myślę, że to moja nowa ulubiona cytat o git! –
Wygląda na to, że wątek nadal oczekuje na pytanie: jak to zrobić globalnie (tj. We wszystkich gałęziach)? W przypadku rekordów możemy użyć następującego:
git config --add merge.ff false
... w celu zastosowania go do wszystkich oddziałów w bieżącym repozytorium. Aby uczynić go zastosować do wszystkich oddziałów w wszystkie repozytoria gdzie ktoś ma nie uruchomić go bez opcji --global
(zastępują lokalne ustawienia globalne) uruchomić to:
git config --global --add merge.ff false
Z documentation (szukaj merge.ff) :
merge.ff
domyślnie git nie tworzy dodatkowy scalającej podczas scalania commit, który jest potomkiem obecny popełnić. Zamiast tego końcówka bieżącej gałęzi jest szybko przekazywana dalej. Po ustawieniu wartości false ta zmienna mówi gitowi, aby w takim przypadku utworzył dodatkowe zatwierdzenie scalania (równoważne daniu opcji--no-ff
z wiersza poleceń). Po ustawieniu na only dozwolone są tylko takie szybkie przewijanie do przodu (co jest równoważne z podaniem opcji--ff-only
z wiersza poleceń).
Uwaga:' merge.ff 'został wprowadzony w Git 1.7.6. Nie działa w starszych wersjach. –
Dla osób korzystających z Git 1.7.6 jest to najlepsze i najprostsze rozwiązanie. –
Używam tego razem z aliasem 'puff =" pull --ff --ff-only "' – stigi
Czytając wątek odpowiedzi skończyło się stosując następujące dwie opcje
git config --global pull.ff only # Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global merge.ff false # even create extra merge commit when fast forward merge would be possible
tylko luźno związane Ja również znaleźć to ustawienie pozwala uniknąć kłopotów podczas ściągania
git config --global pull.rebase # set up pull to rebase instead of merge
- 1. Czy mogę podać obiektowi objdump adres i zlecić jego demontaż?
- 2. Włączenie parametry dziennika git domyślnie
- 3. Jak mogę domyślnie ustawić gt-pull verbose?
- 4. Jak mogę ekstrapolować dalej wzdłuż drogi?
- 5. Jak mogę dalej optymalizować tę strukturę danych?
- 6. Czy mogę wyłączyć ciągnięcie git?
- 7. Czy mogę scalać pliki w git?
- 8. dalej od log4net do NLog
- 9. Warunkowe przekazywanie dowolnej liczby domyślnie nazwanych argumentów do funkcji
- 10. Dlaczego git domyślnie nie przesyła tagów?
- 11. IntelliJ Idea z Git: kiedy automatyczne połączenie się zawiesiło, jak mogę dalej scalać ręcznie
- 12. laravel 5 zlecić role aktualizacja użytkowników
- 13. Visual Studio 2008 - Czy mogę zmienić zakładkę "dodaj odwołanie" domyślnie?
- 14. Czy mogę domyślnie parametr procedury składowanej sql do wyrażenia dynamicznego?
- 15. Jak mogę archiwizować oddziały GIT?
- 16. Eksportuj (domyślnie) klasa w ReactJS
- 17. Czy mogę "wyłączyć" git-clone przez http?
- 18. Czy mogę utworzyć niestandardowy protokół dla git?
- 19. Czy mogę sklonować repozytorium git z BitBucket?
- 20. git pull --rebase upstream & git push origin odrzuca nie-szybkie przewijanie do przodu?
- 21. Jak wyświetlić "git win" w PhpStorm po otwarciu pliku domyślnie
- 22. Optymalizuj sito Eratostenesa Dalej
- 23. Cofnij szybkie przewijanie do przodu
- 24. Dalej: bezpłatne samouczki wideo?
- 25. Czy domyślnie tworzysz klasy w Eclipse?
- 26. Szybkie sortowanie w Haskell
- 27. Przekaż dalej HINSTANCE i przyjaciele
- 28. Szybkie parsowanie ciągów w C#
- 29. Dlaczego polecenie git-svn dcommit zostawia duplikaty commitów w moim repozytorium git? Czy mogę to powstrzymać?
- 30. Włącz drukowanie domyślnie domyślnie w IPython
używam 'seryjnej 'cały czas dla oddziałów, które nie wykonały żadnych przydziałów z pilota, aby je szybko przesłać dalej. Wydaje się, że jest to najprostszy i najbezpieczniejszy sposób. Jestem ciekaw, oczywiście masz przypadek użycia. Dlaczego miałbyś kiedykolwiek chcieć utworzyć commit merge, gdy nie ma żadnych zatwierdzeń po jednej stronie oddziału? –
Używam oddziałów do tworzenia logicznego grupowania zatwierdzeń. Więc jeśli dokonam scalenia, jest to w zasadzie sposób na powiedzenie "te zobowiązania idą w parze". Możesz prawie myśleć o tym jako o ubogim interaktywnym rebase i squasha.:-) –
Wyłączenie szybkiego przekazywania jest niezwykle przydatne, szczególnie gdy podążamy za modelem takim jak [A successful Git branching model] (http://nvie.com/posts/a-successful-git-branching-model/) – Steiny