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ć?


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>

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

 


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

-1

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

$ git status

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.