Saya perlu cara untuk mengekspor perubahan simpanan ke komputer lain.
Di Computer1 saya lakukan
$ git stash save feature
Saya mencoba untuk mendapatkan patch simpanan ke file dan kemudian mengimpornya ke komputer lain
$ git stash show -p > patch
Perintah ini memberi saya file yang bisa saya pindahkan ke komputer lain tempat repo ini dikloning, tetapi pertanyaannya adalah bagaimana cara mengimpornya sebagai simpanan lagi.
Terima kasih
git stash save
sekarang tidak digunakan lagi untukgit stash push
Jawaban:
Anda dapat menerapkan file tambalan (tanpa melakukan perubahan) dengan hanya menjalankan
Maka Anda cukup membuat simpanan baru dari direktori kerja saat ini:
sumber
git stash show "stash@{0}" -p > patch
bukannya perintah shell kedua OP.stash@{0}
..atau Anda dapat membuat cabang dari simpanan Anda (di komputer 1), menggunakan
komit perubahan Anda:
kemudian tambahkan sebagai remote di komputer 2:
sekarang Anda dapat mengambil informasi jarak jauh menggunakan
sekarang Anda dapat mengimpor komit dengan cara yang Anda inginkan; menggunakan git cherry-pick , git rebase atau apa pun yang Anda suka ... Jika Anda ingin terlihat seperti Anda baru saja menggunakan git stash ; Anda dapat menggunakan git cherry-pick --no-commit.
Jika Anda tidak memiliki koneksi langsung antara komputer1 dan komputer2; Anda dapat menggunakan remote (seperti github atau yang serupa):
dan di computer2:
sumber
git stash list --oneline
), jadi Anda secara teknis tidak harus menerapkan simpanan ke objek komit baru. Dengan kata lain, membuat cabang baru tidak perlu. Namun, mendorong simpanan langsung ke kendali jarak jauh sulit untuk dikatakan.Sebagai alternatif, Anda dapat mengekspor seluruh simpanan lokal ke komputer lain sebagai berikut
git pull
pada direktori git lama dan baru untuk memastikan bahwa keduanya memiliki perubahan terbaru.sumber
Cara melakukan ekspor Stash di SourceTree:
Terapkan simpanan Anda padanya dan buat komit
Klik komit Anda dan buat tambalan darinya, bawa file tambalan bersama Anda.
Pergi ke repositori yang berbeda, pilih cabang induk yang sama yang baru saja Anda gunakan dalam 1)
Tindakan / Terapkan Patch, pilih Mode: Ubah file copy yang berfungsi, tekan Terapkan Patch sekarang Anda memiliki modifikasi yang tidak dikomit dari patch di lingkungan kerja Anda saat ini
Buat simpanan baru untuk repo saat ini
sumber
Anda dapat membuat simpanan sebagai file tambalan dari satu mesin, lalu dapat membagikan file tambalan itu ke komputer lain.
Membuat simpanan sebagai tambalan
"Stash @ {0}" adalah referensi dari stash. Ini akan membuat file tambalan dengan simpanan terbaru. Jika Anda ingin yang berbeda gunakan perintah
$ git stash list
untuk melihat daftar simpanan Anda dan pilih yang ingin Anda tambal.Menerapkan tambalan
Sekarang transfer simpanan itu ke komputer lain dan tempel ke folder root proyek Anda. Kemudian jalankan perintah ini
Jika ada kesalahan dan Anda ingin membalikkan perubahan
sumber
Pilihan lain adalah untuk
rsync
yang.git
folder dari satu komputer ke komputer lain.rsync
hanya memproses perubahan file (lebih cepat dari salinan).Satu kelemahan dari pendekatan ini adalah konfigurasi juga akan ditimpa, yang mungkin tidak diinginkan jika Anda menjalankan konfigurasi git yang berbeda antara kedua mesin. Tapi Anda bisa mengatasi hal ini dengan tidak termasuk file dengan
--exclude
pilihan dalamrsync
.Secara keseluruhan saya pikir solusi Git asli lebih bersih, tetapi
rsync
peretasan ini bisa bagus untuk seseorang yang terburu-buru yang mungkin lebih akrab dengan rsync daripada git.sumber
Perintah startup dari pos asli:
tidak berfungsi untuk saya (karena alasan tertentu itu membuat file tambalan yang tidak dapat digunakan). Sebaliknya saya harus:
untuk setiap simpanan yang ingin saya transfer. Kemudian, saya menempatkan repo 'induk' di dalam file: /// jangkauan repo 'child', dan melakukan yang berikut, untuk setiap simpanan komit:
Ini lebih kompleks tetapi melakukan trik untuk saya.
sumber
Jika Anda ingin memindahkan perubahan dari satu mesin ke mesin lain, Anda selalu dapat melakukan perubahan pada mesin Anda dan kemudian melakukan soft reset pada mesin mereka.
Kantor
git commit -m "-stash-"
Dapur
git reset --soft HEAD~1
sumber
Stash adalah komit gabungan khusus dari pohon kerja antara komit dasar dan indeks. Salah satu caranya adalah dengan menyimpan masing-masing sebagai tambalan terpisah, checkout simpanan induk pertama, pulihkan indeks dan susunan pohon dari dua tambalan dan akhirnya pulihkan simpanan (sepertinya satu jawaban berjalan seperti ini).
Ini diperlukan untuk sepenuhnya menciptakan kembali semua informasi dari simpanan, dan jika Anda tidak peduli tentang itu Anda harus setidaknya memeriksa induk pertama simpanan sebelum memulihkan untuk menghindari konflik dan melacak di mana simpanan dibuat.
Inilah yang saya lakukan untuk sepenuhnya memulihkan semua simpanan dari satu repo ke repo lainnya. Jika Anda tidak dapat memilikinya di komputer yang sama, Anda dapat menyimpan tag simpanan dalam bundel setelah membuatnya dan menyalin daftar referensi dan bundel ke komputer target.
Dari akar repo asli:
stash_
+ nomor pada ref simpanan logis)NB: Ini membutuhkan bash atau shell yang kompatibel (ksh, zsh seharusnya melakukan ...) Anda juga bisa menambahkan variabel, misal
stash_$((i++))
jika shell Anda tidak mendukung${param//pattern}
Sekarang di repo baru, untuk setiap ref:
sumber