Sebagai retasan, Anda dapat mencoba mengubah resep untuk membandingkan komit di dua repositori berbeda di halaman GitTips , yaitu:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
di mana ../repojalur ke repositori lain.
Dengan Git modern Anda dapat menggunakan beberapa revisi dan rentang revisi dengan cherry-pick .
Ada di $(git --git-dir=../repo/.git rev-parse --verify <commit>)
sini untuk menerjemahkan <commit>(misalnya HEAD, atau v0.2, atau master~2, yang merupakan nilai dalam repositori kedua yang Anda salin) ke pengenal SHA-1 untuk komit. Jika Anda mengetahui SHA-1 dari perubahan yang ingin Anda pilih, itu tidak perlu.
CATATAN Namun, Git dapat melewati penyalinan objek dari repositori sumber, karena Git tidak tahu bahwa repositori objek alternatif hanya bersifat sementara, untuk satu operasi. Anda mungkin perlu menyalin objek dari repositori kedua dengan:
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
Ini menempatkan objek-objek yang dipinjam dari repositori kedua di penyimpanan repositori asli
Tidak diuji.
Solusi yang tidak terlalu hacky adalah mengikuti jawaban knittl :
- Pergi ke repositori kedua yang ingin Anda salin komitnya, dan buat tambalan dari komit yang Anda inginkan
git format-patch
- Secara opsional, salin tambalan (0001- * dll.) Ke repositori Anda
- Gunakan
git am --3wayuntuk menerapkan tambalan