Katakanlah kita memiliki situasi berikut di Git:
Repositori yang dibuat:
mkdir GitTest2 cd GitTest2 git init
Beberapa modifikasi dalam master berlangsung dan dikomit:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1 bercabang master dan beberapa pekerjaan dilakukan:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
Sementara itu, bug ditemukan dalam kode master dan cabang hotfix dibuat:
git checkout master git branch hotfix1 git checkout hotfix1
Bug diperbaiki di cabang perbaikan terbaru dan bergabung kembali ke master (mungkin setelah peninjauan permintaan / kode tarik):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
Pengembangan fitur1 berlanjut:
git checkout feature1
Katakanlah saya perlu perbaikan terbaru di cabang fitur saya, mungkin karena bug juga terjadi di sana. Bagaimana saya bisa mencapai ini tanpa menduplikasi komitmen ke cabang fitur saya?
Saya ingin mencegah untuk mendapatkan dua komitmen baru pada cabang fitur saya yang tidak ada hubungannya dengan implementasi fitur. Ini tampaknya penting bagi saya jika saya menggunakan permintaan tarikan: Semua komitmen ini juga akan dimasukkan dalam permintaan tarikan dan harus ditinjau meskipun ini sudah dilakukan (karena perbaikan terbaru sudah ada di master).
Saya tidak bisa melakukan git merge master --ff-only
: "fatal: Tidak mungkin untuk maju cepat, batal.", Tapi saya tidak yakin apakah ini membantu saya.
git rebase
sepertinya ilmu hitam bagi saya ....
git branch feature1
dan git checkout feature1
bisa digabungkan menjadi git checkout -b feature1
4. bisa sepenuhnya dikurangi menjadigit checkout -b hotfix1 master
feature1
sepenuhnya lokal, lihatlahgit rebase
.