2014-11-04 5 views
7

W git, mam oddział A. Tworzę kolejny oddział B gdzie tworzę kilka commitów. Następnie chcę przewinąć do przodu gałąź A do oddziału B.Czy można przewinąć kolejną gałąź bez sprawdzania jej?

Wiem, że mogę dokonać płatności A i szybko przewinąć do najnowszego zatwierdzenia B. Ta operacja wymaga dwóch modyfikacji kopii roboczej: pierwsza, aby powrócić do A, a następnie przywrócić kopię roboczą do B. Jeśli nowe zatwierdzenia na B zawierają wiele zmian, operacja może być dość powolna.

Czy można szybko przewinąć kolejną gałąź bez zmiany kopii roboczej? (Innymi słowy, aby poruszać się tylko wskaźnik z A)

+1

'git update-ref'. Używaj ostrożnie. –

+0

@AndrewC dodaj go jako odpowiedź. –

Odpowiedz

3

Git zapewnia komenda update-ref do tego celu

git update-ref A B 

Uwaga: To polecenie jest jednym z poleceń Git niższego szczebla i nie dostarcza dowolny gwarancje, że nie będziesz się pieprzyć. Jeśli B nie jest szybkim wyprzedzeniem A, nadal będzie aktualizować A, potencjalnie czyniąc zgłoszenia niedostępnymi i podlegającymi wyrzucaniu śmieci.

+0

@Zeeker mówi, że nie traci już zobowiązań: http://stackoverflow.com/questions/26752567/is-it-better-to-use-git-branch-f-or-git-update-ref-to-fast -programowo-istniejący-biustonosz # comment42096589_26752567 –

+2

Nie znikną magicznie w momencie, gdy wykonasz polecenie "update-ref" lub coś w tym stylu. Ale mogą stać się nieosiągalne, a gdy to nastąpi, podlegają normalnym zasadom zbierania śmieci. –

+0

Hmm .. Chcę to zrobić, ale nie na tyle, żeby użyć nagiego update-ref. :-( – Thilo

Powiązane problemy