Apakah mungkin untuk melakukan dan mendorong perubahan dari satu cabang ke cabang lain.
Misalnya saya melakukan perubahan di BRANCH1 dan ingin mendorong mereka untuk BRANCH2.
Dari BRANCH1, itu sah untuk dilakukan:
git push origin **BRANCH2**
Dan kemudian reset BRANCH1?
Yang hampir akan bekerja.
Ketika mendorong untuk non-cabang 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>
Tentu saja, meskipun itu hanya akan bekerja jika itu's maju cepat BRANCH2 atau jika anda memaksa. Sintaks yang benar untuk melakukan hal seperti itu adalah
git push <remote> <source branch>:<dest branch>
Lihat deskripsi "refspec" di git push halaman untuk detail lebih lanjut tentang cara kerjanya. Juga perhatikan bahwa kedua kekuatan yang mendorong dan yang reset adalah operasi yang "menulis ulang sejarah", dan seharusnya't dapat dicoba oleh lemah jantung kecuali anda're benar-benar yakin anda tahu apa yang anda're lakukan sehubungan dengan setiap remote repositori dan orang lain yang memiliki garpu/klon dari proyek yang sama.
It's sangat sederhana. Misalkan anda telah membuat perubahan ke Cabang anda A yang berada di kedua tempat lokal dan jarak jauh tetapi anda ingin untuk mendorong perubahan tersebut ke Cabang B yang doesn't ada di mana saja.
Langkah-01: membuat dan beralih ke cabang baru B
git checkout -b B
Langkah-02: Tambahkan perubahan baru cabang lokal
git add . //atau file tertentu(s)
Langkah-03: Melakukan perubahan
git commit-m "commit_message"
Langkah-04: Mendorong perubahan untuk cabang baru B. Perintah di bawah ini akan membuat cabang baru B dan juga jarak jauh
git push origin B
Sekarang, anda dapat memverifikasi dari bitbucket bahwa cabang B akan memiliki satu lagi komit dari cabang A. Dan ketika anda akan pelajari cabang A perubahan ini tidak't berada di sana saat ini telah didorong ke cabang B.
Catatan: Jika anda telah melakukan perubahan ke cabang ** dan setelah itu anda ingin pergeseran perubahan tersebut ke cabang baru B** maka anda akan harus me-reset perubahan tersebut terlebih dahulu. #HappyLearning
Dalam kasus saya, saya punya satu lokal melakukan, yang tidak't didorong untuk asal\master
, tapi berkomitmen untuk lokal saya master
cabang. Lokal ini melakukan harus sekarang didorong ke cabang lain.
Dengan Git Extensions anda dapat melakukan sesuatu seperti ini:
Anda juga bisa melakukan itu di GIT baris perintah. Contoh disalin dari David Christensen:
saya pikir anda'll menemukan
git cherry-pick
+git reset
untuk menjadi banyak lebih cepat alur kerja:Menggunakan skenario yang sama, dengan "tidur" menjadi cabang dengan top-paling melakukan yang salah, it'a akan jauh lebih mudah untuk melakukan hal ini:
git checkout master
git cherry-pick fitur
git checkout fitur
git reset --hard KEPALA^
Menghemat cukup sedikit pekerjaan, dan skenario yang
git cherry-pick
itu dirancang untuk menangani.I'll juga dicatat bahwa ini akan bekerja dengan baik jika itu's bukan yang paling atas commit; anda hanya perlu commitish untuk argumen untuk cherry-pick, melalui:
git checkout master
git cherry-pick $sha1
git checkout fitur
git rebase -aku ... # mendera tertentu komit dari sejarah
Saya mendapatkan hasil yang buruk dengan git push origin branch1:branch2
perintah:
Dalam kasus saya, branch2
telah dihapus dan branch1
telah diperbarui dengan perubahan baru.
Dengan demikian, jika anda ingin perubahan hanya mendorong pada branch2
dari branch1
, mencoba prosedur ini:
Pada branch1
: git add .
Pada branch1
: git commit-m 'komentar'
Pada branch1
: git push origin branch1
Pada branch2
: git pull asal branch1
Pada branch1
: kembali ke commit 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)
Anda telah berkomitmen untuk BRANCH1 dan ingin menyingkirkan melakukan ini tanpa kehilangan perubahan? git reset adalah apa yang anda butuhkan. Lakukan:
git branch BRANCH2
jika anda ingin BRANCH2 untuk menjadi cabang baru. Anda juga dapat menggabungkan ini di akhiri dengan cabang lain jika anda ingin. Jika BRANCH2 sudah ada, kemudian meninggalkan langkah ini keluar.
Kemudian lakukan:
git reset --hard HEAD~3
jika anda ingin me-reset komit pada cabang yang telah anda lakukan. Ini membutuhkan perubahan dari tiga tahun terakhir melakukan.
Kemudian lakukan hal berikut untuk membawa menunjukkan total hit: berkomitmen untuk BRANCH2
git checkout BRANCH2
Sumber ini sangat membantu: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch