Bagaimana cara mendorong cabang Git lokal untuk menguasai cabang di remote?

468

Saya memiliki cabang yang disebut mengembangkan di repo lokal saya, dan saya ingin memastikan bahwa ketika saya mendorongnya ke asal itu digabung dengan asal / master. Saat ini, ketika saya mendorong itu ditambahkan ke cabang pengembangan jarak jauh.

Bagaimana saya bisa melakukan ini?

picardo
sumber
Apakah ada alasan tertentu Anda tidak ingin menggabungkannya secara lokal ke dalam origindan kemudian mendorongnya ke remote?
bhamby
Saya pikir @galador berarti menggabungkan secara lokal ke dalam master- tetapi ini adalah poin yang valid. Jika cukup stabil untuk cabang master asal, maka tentu itu cukup stabil untuk cabang master Anda!
Cascabel
1
@ Jeffromi Ya, wah, salah ketik. -_-
bhamby
2
@ Jeffromi bayangkan Anda sedang mengerjakan sesuatu di master lokal Anda dan Anda membuat beberapa komitmen yang belum siap untuk didorong. Kemudian ternyata Anda memiliki tugas yang mendesak. Anda membuat cabang lokal dari master jarak jauh, bekerja dan mendorong perubahan Anda kembali ke master. Mungkin itu bukan cara terbaik tetapi itulah yang terjadi pada saya dan itulah yang saya lakukan. Itu bekerja dengan sempurna seperti yang dimaksudkan. Yah, saya seharusnya sudah bekerja di cabang lokal yang terpisah di tempat pertama, tapi itu sakit di pantat untuk bercabang sepanjang waktu dan sudah terlambat.
pinkeen
21
Saya mendorong cabang pengembangan ke aplikasi pengujian yang tidak menghadap publik di Heroku untuk melihat bagaimana berbagai hal bekerja di lingkungan Heroku. Jelas tidak ingin menggabungkan kode saya master, tetapi Heroku tidak akan menjalankan kode kecuali ada di masterdalam aplikasi. Ini adalah permintaan yang sangat masuk akal dengan kasus penggunaan yang sah!
JacobEvelyn

Jawaban:

813
$ git push origin develop:master

atau, lebih umum

$ git push <remote> <local branch name>:<remote branch to push into>
mipadi
sumber
25
Jangan lakukan "git push origin: master" yang dapat menghapus cabang Anda yang ada di remote
Mangirdas Skripka
48
@MangirdasSkripka Benar! Cukup gunakan git push origin head:masterjika Anda tidak ingin menentukan nama cabang saat ini :)
Francesc Rosas
23
Ide Bagus @ FrancescRosàs, ini KEPALA (huruf kapital).
smokku
@Mipadi jika saya memiliki izin memperbaiki, dapatkah saya memindahkan ini
Neeraj Sharma
11
@NeerajSharma: Saya tidak tahu apa itu izin perbaikan, atau apa yang ingin Anda pindahkan.
mipadi
194

Sebagai orang yang disebutkan dalam komentar Anda mungkin tidak ingin melakukan itu ... Jawaban dari mipadi benar-benar benar jika Anda tahu apa yang Anda lakukan.

Saya akan mengatakan:

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
sumber
23
Sebagai tambahan, ada beberapa pengertian dalam permintaannya, saya menggunakan
kasing
5
Sekali lagi, teknik ini adalah IMHO untuk pengguna git tingkat lanjut saja. Bukannya itu terlalu sulit, itu hanya mengharuskan orang untuk memahami apa yang mereka lakukan dan mengapa itu bekerja dengan cara kerjanya. Semua orang bebas menggunakan git sesuai dengan keinginan mereka, tetapi saya pikir mengikuti pendekatan yang saya sarankan jauh lebih baik untuk tujuan pendidikan, terutama untuk pendatang baru git. Bersihkan "cabang topik" adalah cara untuk memulai, Anda dapat mengoptimalkan alur kerja Anda nanti jika diperlukan.
Eugene Sajine
1
Ini sebenarnya hal yang cukup umum untuk dilakukan. Cabang utama biasanya adalah cabang penempatan Anda. Jika dua tim dengan sengaja menyebarkan penempatan mereka, maka kemungkinan Anda akan menggunakan cabang lokal yang dipetik ceri untuk mendorong tambalan ke hulu. Sekarang Anda mungkin berpendapat bahwa perubahan harus didorong ke hulu ke cabang dan kemudian digabung dari sana menjadi master, tetapi tentu tidak aneh untuk melakukannya dengan cara lain, IMO.
dgatwood
+1 Ini adalah cara paling logis untuk "membangun" rilis produksi.
Ryan
Bagaimana Anda melakukannya jika Anda tidak ingin bergabung dengan berkembang tetapi telah berkembang menjadi master?
user239558
-1

Sebagai perluasan ke jawaban @ Eugene versi lain yang akan bekerja untuk mendorong kode dari repo lokal ke master / mengembangkan cabang.

Beralih ke cabang 'master':

$ git checkout master

Gabungkan dari repo lokal menjadi master:

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

Push to master:

$ git push
Ram
sumber
-1

Ikuti langkah-langkah di bawah ini untuk mendorong repo lokal ke cabang Masterenter code here

$ git status

Tes Shiv
sumber