Jawaban:
Itu hampir akan berhasil.
Saat mendorong ke cabang non-default, Anda perlu menentukan sumber ref dan target ref:
git push origin branch1:branch2
Atau
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
sambil berpikir bahwa itu hanya akan mendorong cabang lokal saat ini ke remote branch2
, bahwa ia malah akan menghapus remote branch2
! Cara yang benar adalah git push origin HEAD:branch2
.
Tentu saja, meskipun itu hanya akan berfungsi jika itu adalah kemajuan cepat dari BRANCH2 atau jika Anda memaksanya. Sintaks yang benar untuk melakukan hal seperti itu adalah
git push <remote> <source branch>:<dest branch>
Lihat deskripsi "refspec" pada halaman manual git push untuk detail lebih lanjut tentang cara kerjanya. Perhatikan juga bahwa dorongan gaya dan reset adalah operasi yang "menulis ulang sejarah", dan tidak boleh dilakukan oleh orang yang lemah hati kecuali Anda benar-benar yakin Anda tahu apa yang Anda lakukan sehubungan dengan repositori jarak jauh dan lainnya. orang yang memiliki garpu / klon dari proyek yang sama.
git push --force remote local-branch:remote-branch
.
Ini sangat sederhana. Misalkan Anda telah membuat perubahan pada Cabang A Anda yang berada di kedua tempat secara lokal dan jarak jauh tetapi Anda ingin mendorong perubahan ini ke Cabang B yang tidak ada di mana pun.
Langkah-01: buat dan alihkan ke cabang baru B
git checkout -b B
Langkah-02: Tambahkan perubahan di cabang lokal baru
git add. // atau file tertentu
Langkah-03: Lakukan perubahan
git commit -m "commit_message"
Langkah-04: Dorong perubahan pada cabang baru B . Perintah di bawah ini akan membuat cabang B baru juga dari jarak jauh
git push asal B
Sekarang, Anda dapat memverifikasi dari bitbucket bahwa cabang B akan memiliki satu lagi komit dari cabang A . Dan ketika Anda akan checkout cabang A perubahan ini tidak akan ada seperti ini telah didorong ke cabang B .
Catatan: Jika Anda telah melakukan perubahan Anda ke cabang A dan setelah itu Anda ingin menggeser perubahan itu ke cabang baru B maka Anda harus mengatur ulang perubahan itu terlebih dahulu. #HappyLearning
Dalam kasus saya, saya memiliki satu komit lokal, yang tidak didorong origin\master
, tetapi berkomitmen ke master
cabang lokal saya . Komit lokal ini sekarang harus didorong ke cabang lain.
Dengan Git Extensions Anda dapat melakukan sesuatu seperti ini:
Anda juga bisa melakukannya di baris perintah GIT . Contoh yang disalin dari David Christensen :
Saya pikir Anda akan menemukan
git cherry-pick
+git reset
menjadi alur kerja yang jauh lebih cepat:Menggunakan skenario Anda yang sama, dengan "fitur" sebagai cabang dengan komit terbanyak salah, akan lebih mudah untuk melakukan ini:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Menghemat sedikit kerja, dan merupakan skenario yang
git cherry-pick
dirancang untuk menangani.Saya juga akan mencatat bahwa ini akan bekerja juga jika itu bukan komit teratas; Anda hanya perlu komitmen untuk argumen untuk memilih, melalui:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
Saya mendapat hasil yang buruk dengan git push origin branch1:branch2
perintah:
Dalam kasus saya, branch2
dihapus dan branch1
telah diperbarui dengan beberapa perubahan baru.
Karenanya, jika Anda hanya menginginkan perubahan branch2
dari branch1
, coba prosedur di bawah ini:
branch1
:git add .
branch1
:git commit -m 'comments'
Pada branch1
:git push origin branch1
Pada branch2
:git pull origin branch1
Hidup branch1
: kembali ke komit sebelumnya.
Anda dapat melakukan ini dengan mudah
git status
git add .
git commit -m "any commit"
git pull origin (branch name, master in my case)
git push origin current branch(master):branch 2(development)(in which you want to push changes)
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
Anda telah berkomitmen untuk BRANCH1 dan ingin menyingkirkan komitmen ini tanpa kehilangan perubahan? git reset adalah yang Anda butuhkan. Melakukan:
git branch BRANCH2
jika Anda ingin BRANCH2 menjadi cabang baru. Anda juga dapat menggabungkan ini di akhir dengan cabang lain jika Anda mau. Jika BRANCH2 sudah ada, maka tinggalkan langkah ini.
Lalu lakukan:
git reset --hard HEAD~3
jika Anda ingin mengatur ulang komit pada cabang yang telah Anda komit. Ini mengambil perubahan dari tiga komitmen terakhir.
Kemudian lakukan hal berikut untuk membawa komitmen yang dipindahkan ke BRANCH2
git checkout BRANCH2
Sumber ini bermanfaat: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
danbranch2
perlu berada di remote? Bagaimana jika Anda ingin mendorong dari lokalbranch1
ke remoteorigin branch2
?