Jak wypchnąć lokalny oddział Git do gałęzi master na pilocie?

468

W moim lokalnym repozytorium mam oddział o nazwie develop i chcę się upewnić, że kiedy popchnę go do źródła, zostanie on scalony z origin / master. Obecnie, kiedy wypycham, jest dodawany do gałęzi zdalnego programowania.

W jaki sposób mogę to zrobić?

Picardo
źródło
Czy istnieje jakiś szczególny powód, dla którego nie chcesz scalić go lokalnie, origina następnie przekazać go do pilota?
bhamby
Myślę, że @galador oznacza scalenie lokalnie w master- ale jest to ważny punkt. Jeśli jest wystarczająco stabilny dla głównej gałęzi pochodzenia, to z pewnością jest wystarczająco stabilny dla twojej głównej gałęzi!
Cascabel
1
@Jefromi Yeah, ups, literówka. -_-
bhamby
2
@Jefromi wyobraź sobie, że pracujesz nad czymś w swoim lokalnym mistrzu i dokonałeś kilku zmian, które nie są jeszcze gotowe do wypchnięcia. Potem okazuje się, że masz pilne zadanie. Tworzysz oddział lokalny ze zdalnego wzorca, pracujesz i wypychasz zmiany z powrotem do wzorca. Może nie jest to najlepszy sposób, ale tak się stało i właśnie to zrobiłem. Działa bezbłędnie zgodnie z przeznaczeniem. Cóż, w pierwszej kolejności powinienem był pracować w osobnym oddziale lokalnym, ale cały czas bolą mnie tyłki i było już za późno.
pinkeen
21
Przesuwam gałąź rozwoju do niepublicznej aplikacji testowej na Heroku, aby zobaczyć, jak działa środowisko w środowisku Heroku. Zdecydowanie nie chcę scalać mojego kodu master, ale Heroku nie uruchomi kodu, chyba że jest włączony masterw aplikacji. Jest to całkowicie uzasadnione żądanie z uzasadnionymi przypadkami użycia!
JacobEvelyn

Odpowiedzi:

813
$ git push origin develop:master

lub bardziej ogólnie

$ git push <remote> <local branch name>:<remote branch to push into>
mipadi
źródło
24
Nie rób „git push origin: master”, który może usunąć istniejącą gałąź o pilota
Mangirdas Skripka
48
Prawda @MangirdasSkripka! Po prostu użyj, git push origin head:masterjeśli nie chcesz podawać nazwy bieżącego oddziału :)
Francesc Rosas
23
Dobry pomysł @ FrancescRosàs, to HEAD (wielkie litery).
smokku
@Mipadi, jeśli mam zezwolenie na renderowanie, czy mogę to przenieść
Neeraj Sharma,
11
@NeerajSharma: Nie wiem, co to jest uprawnienie podmiotu uprawniającego do renderingu ani co chcesz przenieść.
mipadi
194

Jak wspomniano w komentarzach, prawdopodobnie nie chcesz tego robić ... Odpowiedź mipadi jest całkowicie poprawna, jeśli wiesz, co robisz.

Powiedziałbym:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 

Eugene Sajine
źródło
23
Wystarczy wspomnieć, że jego prośba ma pewien sens, używam tego przypadku, aby wdrożyć (wypchnąć) mój rozwój do mistrza Heroku
Fabiano Soriani
5
Ponownie, ta technika jest IMHO tylko dla zaawansowanych użytkowników git. Nie jest to zbyt trudne, po prostu wymaga od ludzi zrozumienia, co robią i dlaczego działa tak, jak działa. Każdy może swobodnie korzystać z git według własnych upodobań, ale myślę, że zastosowanie zaproponowanego przeze mnie podejścia jest znacznie lepsze do celów edukacyjnych, szczególnie dla początkujących git. Czyste „gałęzie tematyczne” to sposób na rozpoczęcie, w razie potrzeby możesz później zoptymalizować przepływ pracy.
Eugene Sajine,
1
W rzeczywistości jest to dość powszechne. Gałąź główna zwykle jest gałęzią wdrażania. Jeśli dwa zespoły celowo rozejdą się po rozmieszczeniu, istnieje szansa, że ​​użyjesz lokalnego oddziału, aby przesunąć łaty w górę. Teraz możesz argumentować, że zmiany powinny zostać wprowadzone wcześniej do gałęzi, a następnie scalone stamtąd w master, ale z pewnością nie jest to dziwne, aby zrobić to inaczej, IMO.
dgatwood
+1 To najbardziej logiczny sposób na „zbudowanie” wersji produkcyjnej.
Ryan
Jak byś to zrobił, jeśli nie chcesz łączyć się z programowaniem, ale programowanie opiera się na opanowaniu?
user239558,
-1

W odpowiedzi na odpowiedź @ Eugene'a inna wersja, która będzie działała na zasadzie wypychania kodu z lokalnego repozytorium do gałęzi master / develop.

Przełącz na gałąź „master”:

$ git checkout master

Scal z lokalnego repozytorium do master:

$ git merge --no-ff FEATURE/<branch_Name>

Push to master:

$ git push
Baran
źródło
-1

Wykonaj poniższe kroki, aby przekazać repozytorium lokalne do gałęzi Masterenter code here

$ git status

Test Shiv
źródło