Przeszedłem przez wiele kółek, aby uprościć przebieg pracy fork/rebase/pull-request git u deweloperów mojego zespołu, którzy obawiają się kontroli wersji i linii poleceń.Wymusza na git wykonanie operacji "no-op" podczas remizy
W dodanie artykułu rebase na naszej wiki rozwoju, właśnie do punktu, w którym mówię „Czy git rebase
. Jeśli istnieją jakiekolwiek konflikty scalania, naprawić je. Następnie wykonaj git add
. Następnie zrobić git rebase --continue
”.
Ale w pracy poprzez przykład i biorąc zrzuty ekranu, przypomniało mi się, że jeśli występuje konflikt seryjnej, a ja go rozwiązać na korzyść górnej gałęzi, robi git rebase --continue
w rzeczywistości nie chce kontynuować i daje błąd:
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
jest to doskonałe omówienie technicznych szczegółów tutaj: Git rebase: conflicts keep blocking progress
Ale co chciałbym to zrobić to zachowanie zatrzymać.
Zakładam, że istnieje dobry powód, dla którego tak się dzieje (prawdopodobnie w związku z rebase za pomocą zwykłego mechanizmu zatwierdzania, gdzie to zachowanie prawdopodobnie ma sens), ale w tej sytuacji jest to mylące i nieintuicyjne i powoduje logikę konfliktu: "Napraw Jeśli twoja poprawka wygląda dokładnie tak, jak poprzednia gałąź, wykonaj git rebase --skip
. We wszystkich innych przypadkach wykonaj git rebase --continue
. "
Czy istnieje sposób, aby zmiękczyć to zachowanie, albo z flagą do rebase lub w pliku konfiguracyjnym kontrolowanym przez wersję (więc nie muszę konfigurować go na każdym komputerze dewelopera lub dostarczać instrukcje, aby to zrobić)?
Nie sądzę, że jest to duplikat tego pytania. OP tam pyta o to, jak pominąć ponowne umieszczanie pustych zatwierdzeń, podczas gdy OP tutaj pyta o to, jak pozwolić 'git rebase' stworzyć puste zatwierdzenia. –
Ale dlaczego chcesz pusty commit? Puste zatwierdzenie oznacza, że cała wykonana w nim praca została wprowadzona w zatwierdzeniu z gałęzi, która została ponownie pobrana. W takim przypadku całe zatwierdzenie musi zostać usunięte. Można to zrobić po fakcie (np. Za pomocą interaktywnego rebase i pomijając niechciane zatwierdzenie) lub innymi metodami, ale z pewnością "źle" mieć puste zatwierdzenie. – ErikE