Làm cách nào để đẩy một nhánh Git cục bộ lên nhánh chính trong điều khiển từ xa?


468

Tôi có một nhánh được gọi là phát triển trong repo địa phương của tôi và tôi muốn chắc chắn rằng khi tôi đẩy nó về nguồn gốc, nó sẽ được hợp nhất với nguồn gốc / master. Hiện tại, khi tôi đẩy nó được thêm vào một nhánh phát triển từ xa.

Tôi có thể làm cái này như thế nào?


Có một lý do cụ thể nào mà bạn không muốn hợp nhất nó cục bộ vào originvà sau đó đẩy nó ra điều khiển từ xa không?
bhamby

Tôi nghĩ @galador có nghĩa là hợp nhất cục bộ vào master- nhưng đó là một điểm hợp lệ. Nếu nó đủ ổn định cho nhánh chính của nguồn gốc, thì chắc chắn nó đủ ổn định cho nhánh chính của bạn!
Cascabel

1
@Jefromi Vâng, rất tiếc, lỗi đánh máy. -_-
bhamby

2
@Jefromi tưởng tượng bạn đang làm việc gì đó trong chủ địa phương của bạn và bạn đã thực hiện một số cam kết chưa sẵn sàng để thúc đẩy. Sau đó, nó chỉ ra rằng bạn có nhiệm vụ khẩn cấp. Bạn tạo một nhánh cục bộ từ chủ từ xa, làm việc và đẩy các thay đổi của bạn trở lại thành chủ. Có lẽ đó không phải là cách tốt nhất nhưng đó là những gì đã xảy ra với tôi và đó là những gì tôi đã làm. Nó hoạt động hoàn hảo như dự định. Chà, tôi nên làm việc ở một chi nhánh địa phương riêng biệt ngay từ đầu, nhưng thật khó khăn khi phải phân nhánh mọi lúc và đã quá muộn.
pinkeen

21
Tôi đang đẩy một nhánh phát triển đến một ứng dụng thử nghiệm không công khai trên Heroku để xem mọi thứ hoạt động như thế nào trong môi trường của Heroku. Chắc chắn không muốn hợp nhất mã của tôi vào master, nhưng Heroku sẽ không chạy mã trừ khi có mastertrong ứng dụng. Đây là một yêu cầu hoàn toàn hợp lý với các trường hợp sử dụng hợp pháp!
JacobEvelyn

Câu trả lời:


813
$ git push origin develop:master

hoặc, nói chung hơn

$ git push <remote> <local branch name>:<remote branch to push into>

25
Đừng làm "git push origin: master" có thể xóa chi nhánh hiện tại của bạn o điều khiển từ xa
Mangirdas Skripka

48
Đúng @MangirdasSkripka! Chỉ sử dụng git push origin head:masternếu bạn không muốn chỉ định tên của chi nhánh hiện tại :)
Francesc Rosas

23
Ý tưởng hay @ FrancescRosàs, mặc dù đó là ĐẦU (chữ in hoa).
smokku

@Mipadi nếu tôi có sự cho phép của người sửa chữa, tôi có thể di chuyển cái này không
Neeraj Sharma

11
@NeerajSharma: Tôi không biết quyền của người cho vay là gì, hoặc bạn muốn di chuyển cái gì.
mipadi

194

Như mọi người đã đề cập trong các bình luận có lẽ bạn không muốn làm điều đó ... Câu trả lời từ mipadi là hoàn toàn chính xác nếu bạn biết bạn đang làm gì.

Tôi sẽ nói:

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
Chỉ cần đề cập, có một số ý nghĩa trong yêu cầu của anh ấy, tôi đang sử dụng trường hợp đó để triển khai (thúc đẩy sự phát triển của tôi cho chủ nhân Heroku
Fabiano Soriani

5
Một lần nữa, kỹ thuật này là IMHO chỉ dành cho người dùng git nâng cao. Không phải là nó quá khó, nó chỉ đòi hỏi mọi người hiểu những gì họ đang làm và tại sao nó hoạt động theo cách nó hoạt động. Mọi người có thể tự do sử dụng git theo ý thích của họ, nhưng tôi nghĩ theo cách tiếp cận tôi đề xuất là tốt hơn nhiều cho mục đích giáo dục, đặc biệt là cho người mới sử dụng git. Làm sạch "nhánh chủ đề" là cách để bắt đầu, bạn có thể tối ưu hóa quy trình làm việc của mình sau này nếu cần.
Eugene Sajine

1
Đó thực sự là một điều khá phổ biến để làm. Chi nhánh chính thường là chi nhánh triển khai của bạn. Nếu hai đội cố tình chuyển hướng triển khai, thì rất có thể bạn sẽ sử dụng một nhánh địa phương được chọn bằng anh đào để đẩy các bản vá ngược dòng. Bây giờ bạn có thể lập luận rằng các thay đổi nên được đẩy ngược dòng lên một nhánh và sau đó được hợp nhất từ ​​đó thành chủ, nhưng chắc chắn đó không phải là điều kỳ quặc khi làm theo cách khác, IMO.
dgatwood

+1 Đây là cách hợp lý nhất để "xây dựng" bản phát hành sản xuất.
Ryan

Bạn sẽ làm điều đó như thế nào nếu bạn không muốn hợp nhất với phát triển nhưng đã phát triển lại thành chủ?
user239558 17/03/2015

-1

Như một phần mở rộng cho câu trả lời của @ Eugene, một phiên bản khác sẽ hoạt động để đẩy mã từ repo cục bộ sang chủ / phát triển chi nhánh.

Chuyển sang nhánh 'chủ':

$ git checkout master

Hợp nhất từ ​​repo địa phương để làm chủ:

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

Đẩy đến chủ:

$ git push

-1

Thực hiện theo các bước dưới đây để đẩy repo cục bộ vào nhánh Masterenter code here

$ git trạng thái

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.