Aby scalić bieżącą gałąź z inną gałęzią bez sprawdzania innej gałęzi:
Scalanie do przodu
To jest naprawdę łatwe. Z definicji szybkie scalanie oznacza po prostu, że wskaźnik gałęzi jest przesuwany do przodu w drzewie zatwierdzeń. Wszystko, co musisz zrobić, to po prostu zasymulować, że:
git branch -f master dev
Ostrzeżenia: Zakłada to, że masterwskazuje na zatwierdzenie, które również znajduje się w devgałęzi lub innej gałęzi. Jeśli nie, ryzykujesz utratą pracy! W przeciwieństwie do tego, git mergektóry utworzy zatwierdzenie scalania (lub narzeka), gdy szybkie przewijanie do przodu nie jest możliwe, ta metoda po cichu zmusza wskaźnik gałęzi do wskazywania innego zatwierdzenia.
Zakłada to również, że jesteś jedynym, który pracuje nad repozytorium i / lub wiesz, co robisz.
Wskazówka: Jeśli zrobiłeś a git fetchi masz nowe zatwierdzenia origin/master, możesz przenieść mastergałąź bez wyewidencjonowywania za pomocą:
git branch -f master origin/master
Scal przez zatwierdzenie scalania
Nie zawsze jest to możliwe. Aby utworzyć zatwierdzenie scalania, musisz wykonać operację scalenia. Aby wykonać operację scalania, należy zatwierdzić zmiany w innym oddziale, które nie znajdują się w bieżącym oddziale.
Jeśli masz zatwierdzenia w masteroddziale, których nie ma w devoddziale, możesz:
Oświadczenie: Jest to jedynie dowód słuszności koncepcji, tylko po to, aby pokazać, że czasami możliwe jest połączenie z innym oddziałem bez sprawdzenia. Jeśli chcesz go używać codziennie, prawdopodobnie chcesz utworzyć dla niego alias za pomocą przekierowania powłoki lub utworzyć dla niego skrypt powłoki. Z drugiej strony możesz także utworzyć skrypt powłoki dla krótszego procesu pokazanego w pytaniu.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Wyjaśnienie:
- Sprawdź tymczasową gałąź, która wskazuje na to samo zatwierdzenie, co bieżąca gałąź.
Połącz mastersię z gałęzią tymczasową i uruchom edytor komunikatów zatwierdzania. Jeśli chcesz, aby zatwierdzenie scalania wyglądało tak , jakby scaliłeś devgałąź master, edytuj ją z tego:
Merge branch 'master' into temp
do tego:
Merge branch 'dev'
Wskazówka: Możesz użyć -m "Merge branch 'dev'"zamiast -ebyć szybszym.
- Zaktualizuj
masterwskaźnik gałęzi, aby wskazywał na zatwierdzenie scalania.
- Sprawdź
devoddział.
- Wymuś usunięcie gałęzi tymczasowej.
To wciąż dotyka twojego działającego drzewa, ale minimalnie. Nie przywraca drzewa do stanu oryginalnego, masteraby ponownie wprowadzić zmiany w rozwoju. Niektórym może to nie przeszkadzać, ale dla innych może być ważne.