Scenariusz:
- Tworzę nową gałąź
- zhakować to
- popełnij to
- Popchnij
- hack to więcej
- popełnij ponownie
- spróbuj ponownie
Git odpowiada:
Aktualizacje zostały odrzucone, ponieważ końcówka Twojej bieżącej gałęzi znajduje się za jej zdalnym odpowiednikiem. itp.
Tylko ja hakuję tę gałąź - nikt inny jej nie dotyka. Oddział zdalny znajduje się w rzeczywistości za oddziałem lokalnym. W ogóle nie powinnam musieć ciągnąć.
(A jeśli wyciągnę, Git zgłasza konflikty między nimi i zmusza mnie do scalenia gałęzi w siebie)
Dlaczego tak się (prawdopodobnie) dzieje? Jak mogę to zdiagnozować / naprawić?
Żeby było jasne, nigdzie się nie rozgałęziam i nikt inny nad tym nie pracuje:
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C jest prostą kontynuacją B, bez rozgałęzień. Ale git myśli, że C jest gałęzią A:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
To nie jest; to prosta kontynuacja B.
git remote -v
igit show remote origin
(zakładając, że źródłem jest pilot, z którym masz problem) może być pomocneOdpowiedzi:
Prawdopodobnie przepisałeś historię? Twój lokalny oddział różni się od tego na serwerze. Uruchom to polecenie, aby lepiej zrozumieć, co się stało:
Zdecydowanie zalecamy, abyś spróbował zrozumieć, skąd pochodzi ten błąd. Aby to naprawić, po prostu uruchom:
To
-f
sprawia, że jest to „wymuszone wypychanie” i nadpisuje gałąź na serwerze. Jest to bardzo niebezpieczne, gdy pracujesz w zespole. Ale ponieważ jesteś sam i jesteś pewien, że twój stan lokalny jest poprawny, powinno to wystarczyć. Ryzykujesz utratę historii zatwierdzania, jeśli tak nie jest.źródło
HEAD
i@{u}
odnoszą się do zatwierdzeń. Mówią gitk, które gałęzie mają wyświetlić.HEAD
odnosi się do aktualnie wyewidencjonowanej gałęzi,@{u}
jest skrótem odHEAD@{u}
, który reprezentuje wyższą gałąź aktualnie wyewidencjonowanej gałęzi. Czyli np.master
, to jest zwykleorigin/master
.gitk
pomogło!Rozwiązanie jest bardzo proste i działało dla mnie.
Spróbuj tego :
następnie
źródło
Zdarzyło mi się to, gdy próbowałem popchnąć gałąź develop (używam git flow). Ktoś musiał opanować aktualizacje push. aby to naprawić, zrobiłem:
Co spowodowało te zmiany. Następnie,
Co nic nie dało. Myślę, że gałąź deweloperska już została wypchnięta pomimo komunikatu o błędzie. Wszystko jest teraz aktualne i żadnych błędów.
źródło
Aby to zdiagnozować, postępuj zgodnie z tą odpowiedzią .
Ale aby to naprawić, wiedząc, że jesteś jedyną osobą, która go zmienia, wykonaj:
1 - wykonaj kopię zapasową projektu (zrobiłem tylko pliki na git, folder ./src)
2 -
git pull
3 - przywróć kopię zapasową wielu "pomieszanych" plików ( ze wskaźnikami łączenia)
próbowałem
git pull -s recursive -X ours
ale nie działałem tak, jak chciałem, może to być opcja, ale najpierw wykonaj kopię zapasową !!!Upewnij się, że różnice / zmiany (w git gui) nie istnieją. To jest mój przypadek, w ogóle nie ma nic do scalenia, ale github ciągle mówi, że powinienem się scalić ...
źródło