Kami memiliki repo git jarak jauh yang biasanya kami gunakan untuk digunakan git push
di server dev kami lalu git pull
di server langsung kami untuk mendapatkan versi repo terdorong terbaru.
Tetapi jika kita telah melakukan dan mendorong beberapa revisi (tanpa git pull
pada server langsung) bagaimana kita bisa melakukan git pull
itu merujuk pada komitmen yang lebih lama yang kita inginkan?
yaitu sesuatu seperti git pull -r 3ef0dedda699f56dc1062b5dcc2c59f7ad93ede4
git pull server:repo
vs regulergit pull
)uploadpack.allowReachableSHA1InWant
Karena Git 2.5.0 variabel konfigurasi ini dapat diaktifkan di server, di sini permintaan fitur GitHub dan komit GitHub mengaktifkan fitur ini .
Bitbucket Server mengaktifkannya sejak versi 5.5+ .
Pemakaian:
sumber
Jika beberapa proses pada server langsung Anda segera mengakses konten yang baru saja ditarik (yaitu Anda tidak dapat bekerja dengan
git checkout 3ef0d
setelah menarik), Anda harus mempertimbangkan untuk menandai versi yang ingin Anda sebarkan dalam produksi dan secara khusus checkout tag itu pada produksi, sehingga penarikan tidak segera ubah direktori kerja Anda. Kalau tidak, Anda akan mengambil risiko seseorang mendorong sesaat sebelum menarik Anda.sumber
Perhatikan bahwa
git pull git checkout my-old-commit
sekarang membuat Anda dalam status HEAD DETACHED - efektif Anda mengirim komit masa depan dalam repositori ini ke jalur komit baru. Untuk repo penempatan ini bukan masalah besar, karena hanya komit yang harus dilakukan dengan benar sebelum ditarik.Namun, kadang-kadang berguna untuk memeriksa bahwa penanda komit (head, tag, remote) terlihat identik dengan master repo. Untuk memperbaikinya setelah checkout Anda:
git reset
- pasang kembali kepalagit fetch
- sinkronisasi penanda untuk remote [ini mungkin tergantung versi git - memang lingkungan kita masih di 1,7 ... jadi mungkin tidak lagi diperlukan YMMV]sumber