2011-01-15 11 views
14

Mamy oddział "dev", który działa jako de facto master od dłuższego czasu.Git przekazuje zdalny punkt kontrolny do innego oddziału

Czy istnieje sposób, aby mój pilot/master po prostu wskazywał to samo miejsce co zdalny/dev? (bez scalania/zmiany rezerwacji/dodatkowej pracy).

(mniej lub bardziej zmiana nazwy z dev do opanowania)

góry dzięki

Odpowiedz

19

Zamówienie mistrz gałąź, przywróć go do dev, pchnięcie. Wpłynie to na dalszych użytkowników, którzy mogą mieć gałęzie poza swoim pilotem/wzorcem.

git checkout master 

git reset --hard remote/dev 

git push -f 

To spowoduje utratę wszelkich zobowiązuje dokonane od pilocie i dev rozeszły, ale trzeba będzie skończyć z takim samym stanie jak zdalne/dev.

+0

Żeby zweryfikować - stracę wszystko zobowiązuje się do opanowania, ale zachować całą historię oddziału dev? – Boris

+0

Tak, jestem pewien. – RJFalconer

+0

To zadziałało dla mnie, a potem użyłem sposobu @ Romana do usunięcia starej gałęzi z 'git push origin: refs/head/dev' – knocte

6

Zakładając pilot nazywa origin,

git push origin +origin/dev:refs/heads/master 

Następnie, jeśli chcesz również usunąć dev:

git push origin :refs/heads/dev 
+1

Prawdopodobnie będziesz również chciał przenieść lokalny master, prawdopodobnie z twardym resetem. (W tym momencie równie dobrze mógłbyś zrobić to, co sugerował RJFalconer.) – Cascabel

+1

@Jefromi: ma o wiele więcej założeń co do struktury lokalnego repozytorium. Na przykład, nie jest trudno wyobrazić sobie, że lokalna gałąź 'master' po prostu nie istnieje, jeśli nie było żadnej aktywności w' master' upstream. Ogólnie rzecz biorąc, mapowanie między oddziałami lokalnymi i zdalnymi jest arbitralne, chociaż większość ludzi rzeczywiście utrzymuje je w prostocie. –

+0

Ważny punkt. Zakładałem, że będzie miał "mistrza", który pasowałby do jego "pilota/mistrza". Nie jest to duże założenie, ale założenie. – RJFalconer

Powiązane problemy