Cara menyalin cabang Git lokal ke repo jarak jauh

127

Sejauh ini saya telah mengambil langkah-langkah berikut:

  1. Mengkloning repo Git jarak jauh
  2. Bercabang cabang master ke percobaan
  3. diedit / diuji / kode berkomitmen di cabang eksperimental

Sekarang, saya belum siap untuk menggabungkan eksperimental menjadi master. Namun saya ingin mendorongnya kembali ke repo jarak jauh karena itulah repositori yang saya bagikan dengan beberapa rekan. Saya ingin mereka melihat apa yang telah saya lakukan di cabang percobaan. Saya biasanya hanya mengakses repo jarak jauh melalui SSH.

Bagaimana cara berbagi cabang lokal saya pada repo jarak jauh, tanpa memengaruhi cabang utama repo jarak jauh?

Coocoo4Cocoa
sumber
Tautan ini juga sangat berguna dalam aspek ini. Berbagi cabang git
Wisnu Kumar

Jawaban:

157

Menurut halaman manual push git :

 git push origin experimental

Temukan ref yang cocok experimentaldengan repositori sumber (kemungkinan besar akan ditemukan refs/heads/experimental), dan perbarui ref yang sama (mis. refs/heads/experimental) Di repositori asal dengannya.
Jika experimentaltidak ada dari jarak jauh, itu akan dibuat .

Ini sama dengan:

git push origin experimental:refs/heads/experimental

Buat cabang experimentaldi repositori asal dengan menyalin experimentalcabang saat ini .
Formulir ini hanya diperlukan untuk membuat cabang atau tag baru di repositori jarak jauh ketika nama lokal dan nama jarak jauh berbeda ; jika tidak, nama ref itu sendiri akan berfungsi.

Atau, seperti yang disebutkan di ujung git , Anda dapat mengatur "Remote Default Cabang":

Anda dapat menggunakan git config untuk menetapkan remote default ke cabang yang diberikan. Remote default ini akan digunakan untuk mendorong cabang itu kecuali ditentukan lain.

Ini sudah dilakukan untuk Anda ketika Anda menggunakan git clone, memungkinkan Anda untuk menggunakan git push tanpa argumen apa pun untuk mendorong cabang master lokal untuk memperbarui cabang master repositori asal.

git config branch.<name>.remote <remote> 

dapat digunakan untuk menentukan ini secara manual.


Jan menyarankan (untuk git> = 1.7.0 ) opsi push -u(atau push --set-upstream):

Untuk setiap cabang yang terbaru atau berhasil didorong, tambahkan referensi upstream (pelacakan), digunakan oleh argumen-less git-pull (1) dan perintah lainnya.

Dengan begitu, Anda tidak perlu melakukan konfigurasi git.

git push -u origin experimental
VONC
sumber
12
Anda harus menggunakan -uopsi untuk pushmemastikan bahwa cabang lokal Anda melacak yang jauh setelah mempublikasikannya. Jika Anda lupa menggunakan -uopsi, Anda bisa mengetik git push -usetelahnya di cabang, lalu git pullakan berfungsi.
Jan
Saya telah memperkirakan bahwa ketika Anda melakukan ini git push origin experimental, tidak ada bukti dari setiap paket yang diunggah. Sepertinya kendali jarak jauh sudah memiliki semua bahan dari dorongan Anda sebelumnya; itu hanya harus dihubungkan ke referensi .
Kaz
@ Ka: itu akan memiliki semua materi jika komit baru sudah didorong di cabang lain di remote. Dalam hal ini, git push origin experimentalhanya akan membuat cabang experimentaldi remote.
VonC
Terima kasih! Jawaban Anda sangat membantu.
hakre
15

Jika nama cabang Anda experimental, dan nama remote origin, maka itu

git push origin experimental
John Douthat
sumber
Komentar yang sama seperti di atas, tetapi apakah itu membuat cabang eksperimental secara implisit pada repo jarak jauh, atau akankah mendorong ke master remote?
Coocoo4Cocoa
1
itu mendorong cabang eksperimental dan tidak menyentuh master baik di sisi lokal atau jarak jauh
27330 John Douthat
1

git push -u <remote-name> <branch-name> tidak berfungsi jika cabang yang baru dibuat tidak muncul dari repo yang sama, yaitu jika Anda belum membuat cabang baru menggunakan git checkout -b new_branch , maka ini tidak akan berfungsi.

Sebagai contoh, saya telah mengkloning dua repositori berbeda secara lokal dan saya harus menyalin repo2 / branch1 untuk repo1 / dan kemudian mendorongnya juga.

Tautan ini membantu saya mendorong cabang lokal saya (diklon dari repo lain) ke repo jarak jauh saya:

patah kaki
sumber
0

Berikut adalah halaman github resmi untuk manajemen jarak jauh github http://github.com/guides/push-a-branch-to-github . Ini akan membantu Anda menjawab semua pertanyaan Anda.

dylanfm
sumber
Bukankah itu memindahkannya ke cabang master, atau akankah itu secara implisit membuat origin / same_branch_name_as_local?
Coocoo4Cocoa
0

tl; dr

$ git push --set-upstream origin your_new_branch

Info lebih lanjut

setelah Anda melakukan sedikit komitmen pada:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

Anda mendorong cabang Anda menentukan hulu ke salah satu repositori jarak jauh seperti berikut:

$ git push --set-upstream REMOTE YOUR_BRANCH

remote dapat dilihat oleh

$ git remote -v

biasanya, Anda akan memiliki remote standar tunggal origin. jadi perintah Anda akan terlihat seperti:

$ git push --set-upstream origin your_new_branch

dan semua dorongan konsekuen dapat dilakukan hanya dengan git push.

Ivan Prisyazhnyy
sumber