Jestem nowy w Git, więc możesz mnie traktować jak nowicjusza.
Nasz przepływ pracy jest taki. Mamy oddział, do devktórego mogę dotrzeć origin/dev. Kiedy dokonujemy zmian, tworzymy gałąź off dev:
git checkout -b FixForBug origin / dev
Teraz mam gałąź nazwaną FixForBugśledzącą (myślę, że to właściwe słowo) origin/dev. Tak więc, jeśli git pullto zrobię, przyniesie nowe zmiany, z origin/devktórych jest super. Teraz, kiedy skończę z poprawką, wysyłam do zdalnej gałęzi o tej samej nazwie.
Najpierw ściągam wszelkie zmiany z origin/devi robię rebase:
git pull --rebase
Następnie wprowadzam zmiany do zdalnego oddziału o tej samej nazwie:
git push origin FixForBug
Teraz istnieje gałąź na serwerze zdalnym i mogę utworzyć żądanie ściągnięcia, aby ta zmiana została zatwierdzona i włączona z powrotem do gałęzi deweloperskiej. Nie zawsze naciskać nic do origin/devsiebie. Zgaduję, że jest to dość powszechny przepływ pracy.
Za pierwszym razem git pushdziała dobrze i tworzy zdalną gałąź. Jeśli jednak wciskam drugi raz (powiedzmy podczas przeglądu kodu, ktoś wskazuje na problem), pojawia się następujący błąd:
błąd: nie udało się przesłać niektórych odnośników do „https://github.limeade.info/Limeade/product.git”.
Wskazówka: aktualizacje zostały odrzucone, ponieważ końcówka Twojej bieżącej gałęzi znajduje się za jej zdalnym odpowiednikiem. Zintegruj zdalne zmiany (np. Wskazówka: „git pull ...”) przed ponownym naciśnięciem.
Zobacz „Uwaga o szybkim przekazywaniu” w „git push --help”, aby uzyskać szczegółowe informacje.
Jeśli jednak zrobię, git statusto mówi, że wyprzedzam o origin/dev1 zmianę (co ma sens), a jeśli podążę za wskazówką i uruchomię git pull, mówi, że wszystko jest aktualne. Myślę, że dzieje się tak, ponieważ pcham się do innej gałęzi niż moja gałąź upstream. Mogę rozwiązać ten problem, uruchamiając:
git push -f origin FixForBug
W takim przypadku prześle zmiany do zdalnej gałęzi, mówiąc (wymuszona aktualizacja) i wszystko wydaje się być dobre w zdalnej gałęzi.
Moje pytania:
Dlaczego jest to -fwymagane w tym scenariuszu? Zwykle, gdy coś wymuszasz , dzieje się tak dlatego, że robiłeś coś złego lub przynajmniej wbrew standardowej praktyce. Czy mogę to zrobić w porządku, czy może to zepsuje coś w zdalnym oddziale lub spowoduje kłopoty dla każdego, kto będzie musiał ostatecznie scalić moje rzeczy w programistę?
