Bagaimana saya bisa berbagi simpanan git?

32

Apakah ada cara untuk berbagi simpanan di git?

Saya bekerja pada sejumlah mesin, dan sering ingin dapat memindahkan kondisi kerja saya saat ini dari satu ke yang lain.

Saya mencari cara yang bisa mendorong / menarik simpanan dari satu klon ke klon lain, dan membuatnya muncul sebagai simpanan untuk klon lain, atau sebagai cabang terpencil yang tampak. Saya tidak berharap bahwa yang pertama akan berfungsi jika remote sudah memiliki simpanan sendiri.

Mengingat bahwa simpanan adalah, pada dasarnya, sudah cabang dengan komit (tampaknya), saya tidak mencari solusi di sepanjang garis "komit setiap simpanan ke cabang dan kemudian bagikan itu" - Saya sudah punya banyak, banyak cabang. Karena itu saya mencari refspec atau sejenisnya yang dapat saya gunakan untuk mengontrol push / pulling.

PeterJCLaw
sumber

Jawaban:

26

Stashnya adil stashatau refs/stash, yang bisa Anda dorong ke cabang jauh:

git push origin stash@{2}:refs/heads/otherstash

Git akan menolak mendorong langsung ke refs/stash, namun. Juga, sepertinya tidak ada cara untuk mendorong seluruh reflog , tempat simpanan sebelumnya disimpan.

grawity
sumber
6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)harus dilakukan dengan baik untuk semua simpanan; Lihat juga stackoverflow.com/a/5248758/85371
lihat
11

Ini tidak terintegrasi dengan baik git pushtetapi untuk menghindari membuat cabang, saya menggunakan git stash show -p > change.patch(setelah menyembunyikan perubahan) atau bahkan git diff --cached > change.patchuntuk membuat patch yang saya gunakan git apply change.patchpada mesin berikutnya.

Dengan solusi ini setidaknya, jika banyak file diubah dalam kondisi kerja Anda saat ini, semuanya terkandung dalam satu unit data.

Neo
sumber
Ya tapi bagaimana ? git simpanan -p hanya meminta saya secara interaktif tentang setiap bingkah - kemudian meludahkan garis panjang yang saya tidak mengerti. Di mana "tambalan" yang bisa saya bawa ke komputer lain? dan apa perbedaan git? dan bagaimana Anda menggunakan git? Bisakah Anda menjelaskan sedikit lebih jauh?
Motti Shneor
Saya rinci dan dikoreksi jawaban saya
Neo
4

Anda dapat membuat tambalan dan mengirimkannya kepada seseorang. hal yang harus Anda lakukan adalah menerapkannya.

git diff >> file.diff

sumber
3
Catatan ini hanya akan berfungsi untuk objek yang menghasilkan diff; Waspadalah terhadap "File biner berbeda" dalam output.
Liam