Istilah yang menurut saya Anda cari adalah 'cherry pick'. Artinya, ambil satu komit dari tengah satu cabang dan tambahkan ke yang lain:
A-----B------C
\
\
D
menjadi
A-----B------C
\
\
D-----C'
Ini, tentu saja, dapat dilakukan dengan perintah git cherry-pick.
Masalah dengan komit ini adalah bahwa git menganggap komit untuk menyertakan semua riwayat sebelumnya - jadi, jika Anda memiliki tiga komit seperti ini:
A-----B-----C
Dan coba singkirkan B, Anda harus membuat komit yang sama sekali baru seperti:
A-----------C'
Dimana C 'memiliki ID SHA-1 yang berbeda. Demikian juga, mengambil ceri komit dari satu cabang ke cabang lain pada dasarnya melibatkan pembuatan tambalan, kemudian menerapkannya, sehingga kehilangan sejarah dengan cara itu juga.
Perubahan ID komit ini merusak fungsi penggabungan git antara lain (meskipun jika digunakan dengan hemat ada heuristik yang akan membahas ini). Lebih penting lagi, ia mengabaikan ketergantungan fungsional - jika C benar-benar menggunakan fungsi yang ditentukan dalam B, Anda tidak akan pernah tahu.
Mungkin cara yang lebih baik untuk menangani ini adalah dengan memiliki cabang yang lebih berbutir halus. Artinya, alih-alih hanya memiliki 'master', memiliki 'featureA', 'bugfixB', dll. Lakukan peninjauan kode pada seluruh cabang dalam satu waktu - di mana setiap cabang sangat terfokus pada hanya melakukan satu hal - lalu gabungkan itu satu cabang setelah selesai. Ini adalah alur kerja yang dirancang untuk git, dan kegunaannya :)
Jika Anda bersikeras berurusan dengan hal-hal di tingkat tambalan, Anda mungkin ingin melihat darcs - ini menganggap repositori sebagai satu set tambalan, dan dengan demikian pengambilan ceri menjadi operasi mendasar. Namun ini memiliki masalah tersendiri, seperti sangat lambat :)
Sunting: Juga, saya tidak yakin saya mengerti pertanyaan kedua Anda, tentang dua skrip. Mungkin Anda bisa mendeskripsikannya lebih detail, mungkin sebagai pertanyaan terpisah agar tidak membingungkan?