বর্তমানে গৃহীত উত্তর টেকনিক্যালি সঠিক হলে আপনি সরাসরি একটি দূরবর্তী আপনার সমস্ত stashes ধাক্কা গীত বলতে পারে না, এবং তারপর অন্য একটি কম্পিউটারে আপনার স্থানীয় stashes মধ্যে সবকিছু টান।
এবং বর্তমানে শীর্ষ-উত্তরের উত্তরটি কাজ করা উচিত, আমি পছন্দ করি নি যে এটি অস্থায়ী শাখাগুলির একটি গোছা তৈরি করে এবং এটি নিজেই স্ট্যাশ প্রতিশ্রুতিটি পরীক্ষা করে পরীক্ষা করা এবং এটি স্ট্যাশ হিসাবে সংরক্ষণ করা প্রয়োজন, যা এই মন্তব্যের মতো সমস্যাগুলির দিকে নিয়ে যেতে পারে উল্লিখিত , এবং একটি সদৃশ On (no branch): On testing:
। অবশ্যই আরও ভাল উপায় থাকতে হবে!
সুতরাং আপনি সরাসরি স্ট্যাশগুলিকে চাপ দিতে না পারার সময়, স্ট্যাশ কেবলমাত্র একটি প্রতিশ্রুতি (আসলে দুটি কমিট) হয় এবং git push
ম্যান পেজ অনুসারে আপনি কমিটগুলি ঠেকাতে পারেন:
এই <src>
শাখার নামটি আপনি প্রায়শই চাপতে চান তবে এটি যে কোনও নির্বিচারে "SHA-1 এক্সপ্রেশন" হতে পারে ...
আমি স্ট্যাশগুলিকে এই দিকে ঠেলাঠেলি করতে পছন্দ refs/stashes/*
করেছি যাতে আমি অতিরিক্ত শাখাগুলি দিয়ে আমার রিমোটটিকে বিশৃঙ্খলা না করি। সুতরাং আমি এটি দিয়ে এটি করতে পারি:
git push origin stash@{0}:refs/stashes/$(git rev-parse --short stash@{0})
( rev-parse
কমান্ডটি স্ট্যাশের সংক্ষিপ্ত হ্যাশ পেয়েছে, যা রেপোর জন্য অনন্য হবে))
এরপরে, অন্য কম্পিউটার থেকে আমার কাছে স্ট্যাশ আনতে হবে। গিট কেবলমাত্র ডিফল্টরূপে শাখাগুলি নিয়ে আসে তাই আমার বিশেষভাবে স্ট্যাশগুলি আনতে হবে:
git fetch origin refs/stashes/*:refs/stashes/*
এখন স্ট্যাশ কমিটকে সত্যিকারের স্ট্যাশে রূপান্তর করতে। যেমনটি উল্লেখ করা হয়েছে, আমি যখন যথারীতি কেবল স্ট্যাশ প্রতিশ্রুতি পুনরায় সেট করতে এবং পুনরায় স্ট্যাশগুলি পরীক্ষা করতে পারি তখন আমার পছন্দ হয় না এটির জন্য অতিরিক্ত পদক্ষেপের প্রয়োজন হয়, বা এটি স্ট্যাশগুলির জন্য সূচক অবস্থা বজায় না রাখে। এটি স্বয়ংক্রিয়ভাবে করার জন্য আমি অনলাইনে সন্ধান করছিলাম তবে আমার অনুসন্ধান-ফু আমাকে ব্যর্থ করেছিল। অবশেষে আমি ম্যান পৃষ্ঠাটি git stash
সন্ধান করেছি, যেখানে আমি এটি পেয়েছি:
স্ট্যাশ তৈরি করুন (যা নিয়মিত কমিট অবজেক্ট) এবং রেফ নেম স্পেসে কোথাও না সঞ্চয় করে এর অবজেক্টের নাম ফিরিয়ে দিন। এটি স্ক্রিপ্টগুলির জন্য কার্যকর হতে পারে। এটি সম্ভবত আপনি যে আদেশ ব্যবহার করতে চান তা নয়; উপরে "সংরক্ষণ করুন" দেখুন।
দোকান
স্টোর একটি প্রদত্ত লুকোবার জায়গা নির্মিত মাধ্যমে Git লুকোবার জায়গা লুকোবার জায়গা সুত্র এ, লুকোবার জায়গা reflog আপডেট (যা একটি আনত একত্রীকরণ কমিট হয়) তৈরি করুন। এটি স্ক্রিপ্টগুলির জন্য কার্যকর হতে পারে। এটি সম্ভবত আপনি যে আদেশ ব্যবহার করতে চান তা নয়; উপরে "সংরক্ষণ করুন" দেখুন।
যেহেতু আমার কাছে ইতিমধ্যে প্রতিশ্রুতিবদ্ধতা রয়েছে, store
তাই আমি যা চাই তা শোনায়। সুতরাং আমি এটি করতে পারি:
git stash store --message "$(git show --no-patch --format=format:%s <SHA>)" <SHA>
<SHA>
সবেমাত্র নেওয়া হয়েছে এমন স্ট্যাশ প্রতিস্থাপন ।
( git show
স্ট্যাশ লগের বার্তা হিসাবে ব্যবহার করার জন্য, আদেশটি স্ট্যাশ প্রতিশ্রুতি থেকে প্রতিশ্রুতি বার্তা পায় gets)
আমার স্থানীয় রেপোতে এখন স্ট্যাশগুলি স্বাভাবিক হিসাবে দেখা যাচ্ছে:
$ git stash list
stash@{0}: On master: temp
...
রিমোটটি পরিষ্কার করতে স্ট্যাশগুলি রিমোট থেকে এভাবে মুছে ফেলা যায়:
git push origin :refs/stashes/<SHA>
এই পদ্ধতিটিতে আদর্শবান হওয়ার সুবিধাও রয়েছে: আপনি যদি push
কমান্ডটি আবার চালনা করেন তবে এটি প্রতিবেদন করবে Everything up-to-date
। fetch
কমান্ড এছাড়াও নিরাপদে বারবার চলবে। যদিও এটি stash store
স্ট্যাশ স্টোরিং এড়িয়ে যাবেন যদি এটি সাম্প্রতিক স্ট্যাশগুলির মতো হয় তবে এটি পুরানো স্ট্যাশগুলির সদৃশ প্রতিরোধ করে না। এটি যদিও আমার git-rstash
স্ক্রিপ্টের মতো কাজ করা যায় তবে নীচে দেখুন।
সমাপ্তির জন্য, আপনি সহজেই সমস্ত স্ট্যাশগুলি (সহ) টিপতে পারেন সজোরে আঘাত):
for i in $(seq 0 $(expr $(git rev-list --walk-reflogs --count stash) - 1))
do
git push origin stash@{$i}:refs/stashes/$(git rev-parse --short stash@{$i})
done
বা সমস্ত আনীত স্ট্যাশ আমদানি করুন:
for stash in $(ls .git/refs/stashes)
do
git stash store --message "$(git show --no-patch --format=format:%s $stash)" $stash
done
আমি একটি তৈরি করেছি সজোরে আঘাতস্ক্রিপ্ট যা একটি উপকমন্ড (যেমন git rstash push 0
) হিসাবে ডাকা যেতে পারে তাই আমাকে এই সমস্ত মনে রাখার দরকার নেই। git-rstash
এখানে পাওয়া যাবে।
git fetch some-remote +refs/stash:refs/remotes/some-remote/stash
git stash apply some-remote/stash