Historia może być pomieszana przy użyciu rebase, ale zwykle zdalne repo nie akceptuje zmiany, która modyfikuje historię (chyba że używasz git push - force), ale nawet więcej, deweloper z uprawnieniami push może usunąć oddział całkowicie (git push origin: nazwa-gałęzi). Tak więc proste zasady to:
Nie pozwól, aby zezwolenie push dla programistów, którym nie ufasz.
Gdy repo jest wspólne, nie zadzieraj z historią, unikać rebase na przeszłość zobowiązuje. Zamiast tego użyj scalania lub wyboru typu "wiśnia", jeśli chcesz dodać coś z innej gałęzi, w takim przypadku nie wpłynie to na historię.
Możesz zachować politykę nie używania "push-f" na wspólnym repo, w takim przypadku programista będzie wiedział, że jeśli push zostanie odrzucony, to coś pójdzie nie tak (najprawdopodobniej lokalny oddział nie jest aktualny ze zdalnym) i powinien rozwiązać problem lokalnie, zamiast forsować push.
chodzi o Twoje pytanie, jak zapobiec - wykorzystać Gerrit systemu rewizji, to jest jak krok pośredni na drodze zatwierdzenia pomiędzy lokalnym repozytorium i głównego repo deweloperskim z ładnym interfejsem WWW rewizji, można nadać uprawnienia do przesyłaj do repozytorium rewizji każdemu, ale zmiana zostanie scalona z Twoim oddziałem głównym po weryfikacji i zatwierdzeniu (które wymagają pewnych uprawnień, które zwykle przyznajesz programistom). Możesz zobaczyć, jak to wygląda w projekcie Mahara: https://reviews.mahara.org W tym konkretnym przypadku, tylko gerrit bot może pchać do opanowania (co jest here) i nikt inny.
@sehe To nie rozwiązuje problemu błędu ludzkiego i sprawia, że adopcja git jest problemem organizacyjnym, a także technicznym. –
Czy masz rację? Przepływ pracy w ramach procedury
VCSto wyzwanie organizacyjne. Poza tym, wydaje mi się to zabawne, jak to określasz, po tym, gdy akceptujesz odpowiedź, która mówi to samo ** i ** proponuje użycie Gerrita do moderowania dostępu push ... 8 sierpnia – sehePunktem, który robię, jest to, że " musisz zaufać każdemu deweloperowi lub mieć odźwiernych i nikt nigdy nie popełni błędu "nie jest tak naprawdę zadowalającą odpowiedzią na moje pytanie (współpracownika). Przyjąłem odpowiedź, która mówiła z grubsza, że zakładając, że jest to jedyne rozwiązanie, ale kilka tygodni później zaproponowano inne podejście. Spróbuję zastosować metodę config-parameters i jeśli się powiedzie, będzie to moja preferowana odpowiedź. –