Saya bertanya-tanya apakah ada cara mudah untuk mendorong dan menarik cabang lokal dengan cabang jauh dengan nama yang berbeda tanpa selalu menyebutkan kedua nama.
Sebagai contoh:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Sekarang jika seseorang memperbarui remote_branch_name, saya dapat:
$ git pull
Dan semuanya digabung / diteruskan. Namun, jika saya membuat perubahan pada "newb" lokal saya, saya tidak bisa:
$ git push
Sebaliknya, saya harus:
% git push origin newb:remote_branch_name
Agak konyol. Jika git-pull
digunakan git-config branch.newb.merge
untuk menentukan dari mana menarik, mengapa tidak bisa git-push
memiliki opsi konfigurasi serupa? Apakah ada jalan pintas yang bagus untuk ini atau haruskah saya melanjutkan saja?
sumber
git push buildserver .:test_this
mana.
akan menjadi nama cabang lokal yang saya belum tentu tahu. Aku bisa mencarinya, tentu, tetapi jika ada tangan pendek, seperti titik, untuk itu, itu akan keren.HEAD
adalah singkatan yang Anda cari.HEAD
adalah apa yang menunjuk ke cabang yang saat ini keluar, atau langsung ke komit tertentu jika Anda memiliki kepala yang terpisah.Updates were rejected because a pushed branch tip is behind its remote
kesalahan saya. Repo lokal saya sudah mutakhir, tetapi nama-nama itu berbeda.Saat Anda melakukan push awal, tambahkan parameter -u :
Dorongan berikutnya akan pergi ke tempat yang Anda inginkan.
EDIT:
Sesuai komentar, itu hanya mengatur tarikan.
harus melakukannya.
sumber
-u
hanya mengatur hulu, yang menurut pertanyaan, sudah diatur. Dia perlu setpush.default
untukupstrem
untuk mendapatkanpush
menghormati pengaturan hulu, karena secara default hanyapull
tidak.git branch --set-upstream
itu tidak perlu. Catatan: sayagit --version
adalah 2.17.1.Perintah oleh Adam sekarang sudah ditinggalkan. Kamu bisa memakai:
untuk mengatur cabang hulu
my_local_branch
keorigin/my_remote_branch
.sumber
Inilah proses yang berhasil bagi saya.
Sekarang repo baru Anda akan menjadi 'asal' dan repo asli adalah 'hulu'. Konfirmasikan dengan menjalankan git remote -v. (Catatan samping: Hulu digunakan untuk mengambil dari repo asli - agar salinan lokal Anda tetap sinkron dengan proyek yang ingin Anda beri kontribusi - dan asal digunakan untuk menarik dan mendorong karena Anda dapat berkontribusi pada repo Anda sendiri).
git push origin master
Sekarang master repo jarak jauh baru Anda (di Github) akan disinkronkan dengan master asli, tetapi tidak memiliki cabang fitur apa pun.
Rebase adalah penggabungan yang cerdas. Kemudian dorong untuk menguasai lagi dan Anda akan melihat cabang fitur yang dipilih sebagai master pada repo baru.
Pilihan:
sumber
Saya telah mengalami masalah yang sama untuk beberapa waktu sekarang. Saya akhirnya memiliki seperangkat pernyataan sehingga saya tidak harus melakukannya
git push origin local:remote
setiap waktu. Saya mengikuti ini:Setelah mengatur upstream ke cabang jauh dengan nama yang berbeda (baris pertama) dan kemudian menjadikannya sebagai default (baris kedua), baris ketiga sekarang akan mematuhi aturan-aturan ini dan mendorong ke set upstream.
sumber