গিট স্ট্যাশকে কি কোনও দূরবর্তী সংগ্রহস্থলের দিকে ঠেলা সম্ভব?


204

গিট-এ, কোনও স্ট্যাশ তৈরি করা, স্ট্যাশটিকে দূরবর্তী সংগ্রহস্থলে চাপানো, অন্য কম্পিউটারে স্ট্যাশ পুনরুদ্ধার করা এবং স্ট্যাশ প্রয়োগ করা সম্ভব?

বা আমার বিকল্পগুলি:

  • একটি প্যাচ তৈরি করুন এবং অন্যান্য কম্পিউটারে প্যাচটি অনুলিপি করুন, বা
  • একটি ছোটখাটো শাখা তৈরি করুন এবং সেই শাখায় অসম্পূর্ণ কাজটি প্রতিশ্রুতিবদ্ধ?

উত্তর:


68

এটি আনা বা এটির মাধ্যমে পাওয়া সম্ভব নয়, আয়না রেফস্পেক হয় fetch = +refs/*:refs/*, এবং স্ট্যাশ সত্ত্বেও refs/stashএটি প্রেরণ করা হয় না। সুস্পষ্টভাবে refs/stash:refs/stashএর কোনও প্রভাব নেই!

এটি কেবল যাইহোক বিভ্রান্তিকর হবে যেহেতু এটি সমস্ত স্ট্যাশগুলি আনবে না, কেবল সর্বশেষতম; stashes তালিকা reflog সুত্র এর refs/stashes


4
আপনি গিট রিমোট থেকে সর্বশেষতম স্ট্যাশ আনতে পারেন, তবে আপনার স্ট্যাশে নয়, কেবল অন্য রেফের মধ্যে। ভালো কিছু । তবে আপনি পুরানো স্ট্যাশগুলি পেতে পারবেন না কারণ সেগুলি রিফ্লগে সংরক্ষণ করা হয়েছে যা অনুপযুক্ত নয়। দেখুন stackoverflow.com/questions/2248680/...git fetch some-remote +refs/stash:refs/remotes/some-remote/stashgit stash apply some-remote/stash
sj26

75

দ্রষ্টব্য: আমি এই উত্তরটি আমার বেল্টের নীচে আরও 24 ঘন্টা আরও গিট-ফু দিয়ে আবার লিখেছি :) আমার শেল ইতিহাসে, পুরো শেবাং এখন তিনটি ওয়ান-লাইনার। যাইহোক, আমি আপনার সুবিধার জন্য এগুলিকে নিঃশব্দ করেছি।

এইভাবে, আমি আশা করি যে আমি কীভাবে জিনিসগুলি করেছি তা দেখতে আপনি সক্ষম হবেন, কেবল অন্ধভাবে অনুলিপি করে / স্টাফের জিনিসগুলি অনুলিপি করার জন্য।


এখানে ধাপে ধাপে।

অনুমান করুন as / ওলড্রেপোতে স্ট্যাশযুক্ত এমন উত্স। কোনও স্ট্যাস নেই এমন একটি টেস্ট ক্লোন তৈরি করুন:

cd ~/OLDREPO
git clone . /tmp/TEST

সমস্ত স্ট্যাশকে অস্থায়ী শাখা হিসাবে পুশ করুন:

git send-pack /tmp/TEST $(for sha in $(git rev-list -g stash); \
    do echo $sha:refs/heads/stash_$sha; done)

স্ট্যাশেগুলিতে ফিরে রূপান্তর করতে প্রাপ্তির শেষের লুপ:

cd /tmp/TEST/
for a in $(git rev-list --no-walk --glob='refs/heads/stash_*'); 
do 
    git checkout $a && 
    git reset HEAD^ && 
    git stash save "$(git log --format='%s' -1 HEAD@{1})"
done

আপনি চাইলে আপনার অস্থায়ী শাখাগুলি পরিষ্কার করুন

git branch -D $(git branch|cut -c3-|grep ^stash_)

একটি গিট স্ট্যাশ তালিকা করুন এবং আপনি এরকম কিছু পাবেন:

stash@{0}: On (no branch): On testing: openmp import
stash@{1}: On (no branch): On testing: zfsrc
stash@{2}: On (no branch): WIP on sehe: 7006283 fixed wrong path to binary in debianized init script (reported as part of issue
stash@{3}: On (no branch): WIP on debian-collab: c5c8037 zfs_pool_alert should be installed by default
stash@{4}: On (no branch): WIP on xattrs: 3972694 removed braindead leftover -O0 flag
stash@{5}: On (no branch): WIP on testing: 3972694 removed braindead leftover -O0 flag
stash@{6}: On (no branch): WIP on testing: db9f77e fuse_unmount_all could be starved for the mtx lock
stash@{7}: On (no branch): WIP on xattrs: db9f77e fuse_unmount_all could be starved for the mtx lock
stash@{8}: On (no branch): WIP on testing: 28716d4 fixed implicit declaration of stat64
stash@{9}: On (no branch): WIP on emmanuel: bee6660 avoid unrelated changes

আসল সংগ্রহস্থলে একইরকম লাগছিল

stash@{0}: WIP on emmanuel: bee6660 avoid unrelated changes
stash@{1}: WIP on testing: 28716d4 fixed implicit declaration of stat64
stash@{2}: WIP on xattrs: db9f77e fuse_unmount_all could be starved for the mtx lock
stash@{3}: WIP on testing: db9f77e fuse_unmount_all could be starved for the mtx lock
stash@{4}: WIP on testing: 3972694 removed braindead leftover -O0 flag
stash@{5}: WIP on xattrs: 3972694 removed braindead leftover -O0 flag
stash@{6}: WIP on debian-collab: c5c8037 zfs_pool_alert should be installed by default
stash@{7}: WIP on sehe: 7006283 fixed wrong path to binary in debianized init script (reported as part of issue #57)
stash@{8}: On testing: zfsrc
stash@{9}: On testing: openmp import

1
আমি অল্প সময়ের মধ্যে অনেক কিছু শিখছি, এবং আমার মনে হয় আমার সম্ভবত পূর্ববর্তী পদ্ধতিতে অনেক কমান্ড ব্যবহার করা উচিত, যা আমি পরে করার চেষ্টা করব।
শেহে

9
এটি আমার পক্ষে ভালভাবে কাজ করেছে, কেবলমাত্র নতুন পদক্ষেপের git add .আগে যদি নতুন ফাইল স্ট্যাশ করা না যায় তবে git stash save ...পদক্ষেপের আগে আমার দরকার ছিল I git stashএছাড়াও, ফলাফলটি পাইপিংয়ের git rev-list ...মাধ্যমে tacস্ট্যাশগুলির ক্রমটি বিপরীত হয় যাতে তারা একই ক্রমে বের হয়।
অ্যালান ক্রুয়েগার

1
@ এই চমৎকার স্ক্রিপ্ট !! দুটি পরামর্শ: ১) - চূড়ান্ত রেফ-তালিকার বিপরীত করুন যাতে স্ট্যাশগুলি মূল রেখার মতো লক্ষ্য রেপোতে একই ক্রমে থাকে। ২) চূড়ান্ত forলুপটি দিয়ে শেষ করুন git branch -D stash_$a(স্ট্যাশগুলি তৈরি হওয়ার সাথে সাথে পরিষ্কার করুন) যাতে কিছু ভুল হয়ে যায় এবং আমরা আবার চেষ্টা করি তবে ইতিমধ্যে সফলভাবে স্টেস্ট করা প্রতিশ্রুতিগুলি পুনরায় প্রসেস করি না।
কিথ রবার্টসন

1
"কেবলমাত্র সমাধান পোস্ট করার পরিবর্তে" আপনি কী করেছেন তা ব্যাখ্যা করার জন্য সময় দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ।
মার্জন ভেনেমা

1
সমাধানটি আরও উন্নত করা যেতে পারে: আপনি যদি প্রতিস্থাপন git stash save "$(git log --format='%s' -1 HEAD@{1})"করেন git update-ref --create-reflog -m "$(git show -s --format=%B $rev)" refs/stash $revতবে মূল স্ট্যাশ বার্তা পান ( পর্দার আড়ালে update-refকী git stash saveরয়েছে)।
সেবাস্তিয়ান শ্র্রেডার

31

আমি পার্টিতে কিছুটা দেরি করেছি, তবে আমি বিশ্বাস করি যে আমি এমন কিছু খুঁজে পেয়েছি যা এই বিষয়ে আমার পক্ষে কাজ করে এবং আপনার পরিস্থিতি যদি একই বা অনুরূপ হয় তবে তা আপনার পক্ষেও হতে পারে।

আমি তার নিজস্ব শাখায় একটি বৈশিষ্ট্য নিয়ে কাজ করছি। শাখাটি মাস্টারের সাথে একীভূত হয় না এবং শেষ না হওয়া পর্যন্ত ধাক্কা দেওয়া হয় না বা আমি এমন কমিট করে ফেলেছি যেগুলি আমি জনসাধারণের কাছে প্রদর্শন করতে স্বাচ্ছন্দ্য বোধ করি। সুতরাং আমি যখন অন্য কম্পিউটারে নন-স্টেজেড পরিবর্তনগুলি স্থানান্তর করতে চাই তখন আমি যা করি তা হ'ল:

  • আপনি [non-commit] FOR TRANSFER ONLYস্থানান্তর করতে চান এমন সামগ্রীটি বৈশিষ্ট্যযুক্ত " " এর মতো একটি প্রতিশ্রুতিবদ্ধ বার্তা সহ একটি প্রতিশ্রুতিবদ্ধ করুন ।
  • অন্য কম্পিউটারে লগইন করুন।
  • তারপরে:

    git pull ssh+git://<username>@<domain>/path/to/project/ rb:lb

    আপনি যদি অন্যভাবে আপনার ভান্ডারগুলিতে অ্যাক্সেস করেন তবে URL টি আপনার পক্ষে পৃথক হতে পারে। এটি ইউআরএল থেকে দূরবর্তী শাখা "আরবি" থেকে স্থানীয় শাখা "এলবি" এ পরিবর্তনগুলি টানবে। মনে রাখবেন যে আমার নিজের কম্পিউটারে একটি এসএস সার্ভার চালু আছে এবং সেভাবে সংগ্রহস্থলটি অ্যাক্সেস করতে সক্ষম হয়েছি।

  • git reset HEAD^(বোঝা --mixed)

    এটি "[অ-প্রতিশ্রুতিবদ্ধ]" কমিট করার আগে রাষ্ট্রটির দিকে ইঙ্গিত করার জন্য এইচএইডিএডকে পুনরায় সেট করে।

গিট-রিসেট (1) থেকে: " --mixed: সূচকটি পুনরায় সেট করে তবে কার্যনির্বাহী গাছ নয় (অর্থাত্ পরিবর্তিত ফাইলগুলি সংরক্ষণ করা হলেও প্রতিশ্রুতির জন্য চিহ্নিত নয়) [...]"

সুতরাং শেষ পর্যন্ত আপনার ফাইলগুলিতে পরিবর্তনগুলি আসবে তবে মাস্টার করার জন্য কোনও প্রতিশ্রুতি দেওয়া হয় না এবং কোনও স্ট্যাশের প্রয়োজন হয় না।

তবে এটি আপনার প্রয়োজন হবে git reset --hard HEAD^সেই ভাণ্ডারটিতে যা আপনি "[অ-প্রতিশ্রুতিবদ্ধ]" করেছেন, যেহেতু সেই প্রতিশ্রুতি আবর্জনা।


এটি অনেকগুলি অন্ধকার মাত্র তখন একটি নতুন বৈশিষ্ট্য শাখা তৈরি করে তারপরে এটি মুছে ফেলা হয় ....
তাইগস্ট

আমার অনুমান অনুসারে @ ট্যাগগোস্ট আপনার পরিবেশের উপর নির্ভরশীল। কিছু সিআই / সিডি স্টাফ হতে পারে কেবল শাখাটি উজানের উইলির নীলে ঠেকানো। তবে হ্যাঁ, আপনি যা পছন্দ করেন তার উপর নির্ভর করে আপনি একই জিনিসটি সম্পাদন করতে কেবল একটি শাখা তৈরি করতে চাইতে পারেন।
ভিক্টর জামমানিয়ান

22

কিছুটা দেরি হলেও এই উত্তরটি কারওর পক্ষে সহায়তা করতে পারে। আমি এটি জানতে চেয়েছিলাম কারণ আমি একটি ইন-প্রগ্রেস বৈশিষ্ট্য / বাগ / যাইহোক এবং অন্য কম্পিউটারে একই পয়েন্ট থেকে কাজ করতে সক্ষম হতে চেয়েছিলাম।

আমার পক্ষে যা কাজ করে তা হ'ল আমার অগ্রগতি কোড (যে শাখায় আমি একা কাজ করছি) প্রতিশ্রুতিবদ্ধ। আমি যখন আমার অন্যান্য কম্পিউটারে পৌঁছে যাই, তখন একটি টানুন, তারপরে কমিটটি পূর্বাবস্থায় ফেরা করুন:

git reset --soft HEAD^

সেখানে আপনার সমস্ত অগ্রগতিতে পরিবর্তন, অনির্কিত এবং অযৌক্তিকর সাথে যেমন ছিলেন তেমন কাজ চালিয়ে যান।

আশা করি এটা সাহায্য করবে.


আমি যখন এটি করার চেষ্টা করি, উত্স এখনও প্রতিশ্রুতি বজায় রাখে, এটি নিঃসন্দেহে ছিল। আমার কাছে সিগার নেই
rezwits

@ রিজুইটস হ্যাঁ, রিমোট এটি রাখে, তবে কেবল অস্থায়ী শাখাটি উত্স থেকে মুছে ফেলা সহজ।
স্যার রবার্ট

আসলে আমি এটাই করছি!
rezwits

19

এটি সমাধান করার জন্য খুব ঝরঝরে কৌশল বলে মনে হচ্ছে। আপনি git diff > file.diff(এবং ফাইলটি প্রতিশ্রুতিবদ্ধ) ব্যবহার করতে পারেন , তারপরে git apply file.diffএকই ফলাফল অর্জন করতে (যে কোনও জায়গা থেকে) ব্যবহার করে পরিবর্তনগুলি পুনরুদ্ধার করতে পারেন ।

এটি এখানেও ব্যাখ্যা করা হয়েছিল ।


5
যদি আপনার ফাইলগুলি যদি ট্রেড না করে থাকে: 1. গিট অ্যাড। 2. গিট ডিফ হেড> ফাইল.ডিফ
ট্রিকপট্টি

নিজেকে আলাদা করে বার্তা দেওয়ার ফলে রেপোতে কোনও পদক্ষেপ / পায়ের ছাপ দেওয়ার অনুমতি নেই! (যেমন: সিগন্যাল ডেস্কটপ অ্যাপের মাধ্যমে নোট-টু-স্ব) বা ইমেল।
জন মে

9

আমি দ্বিতীয় পদ্ধতির সাথে যাব যদিও আপনি কেন এটি মাস্টার / বৈশিষ্ট্যযুক্ত শাখায় প্রতিশ্রুতিবদ্ধ করতে পারবেন না তা ধারণা নেই। চেরি-বাছাই করাও সম্ভব।


27
মাস্টার / বৈশিষ্ট্যযুক্ত প্রতিশ্রুতিবদ্ধ না করার কোনও প্রযুক্তিগত কারণ নেই, কেবলমাত্র আমি বলতে চাই "এটি সত্যিকারের প্রতিশ্রুতি নয়, এটি কেবল আমার কাজটি সংরক্ষণ করছে যাতে আমি এটি অন্য মেশিনে পেতে পারি"।
অ্যান্ড্রু গ্রিম

4

এএএফআইএকে স্ট্যাশ সম্পর্কিত পুরো ধারণাটি স্থানীয় কার্পেটের অধীনে অতীব গুরুত্বপূর্ণ কিছু লুকানো । আপনার প্রিয় বাজে কথা সম্পর্কে কারওই জানা উচিত নয় ;-) কেবলমাত্র "তবে" হ'ল: তবে যদি আমি বেশ কয়েকটি ওয়ার্কস্টেশনগুলিতে বিকাশ করি? তাহলে scpউপায় ভাল।


9
এই মজার কিছু মন্তব্য করা উচিত। ;-)
অ্যান্ড্রু গ্রিম

2
এখানে মোট গিট-এসএস-নবাবী কিন্তু আপনি কি তখন গিথুব দিয়ে স্ক্যাপ ব্যবহার করতে পারবেন?
কোইন

না, গিথুবের গিট-এসএস সামনের অংশটি প্রোগ্রাম করা হয়েছে যাতে আপনার কাছে কোনও এসএস শেল / কনসোল না থাকে। এটি কেবল সার্ভার-সাইড গিট প্রক্রিয়া চালাতে পারে।
আরজেন্ট_স্মিত

1
যদি আপনার মাস্টার শাখাটি গিথুব এ থাকে তবে স্ক্রিপ এই দৃশ্যটির জন্য আসলেই কোনও বিকল্প নয়? সেক্ষেত্রে স্ট্যাশ স্থানান্তর করার জন্য অন্য কোনও পরামর্শ?
কোইন

1
আমি জোর দেওয়ার চেষ্টা করেছি যে স্ট্যাশ ট্রান্সফার মোটেই সম্ভব নয়, আফাইক।
আরজেন্ট_স্মিত

2

বর্তমানে গৃহীত উত্তর টেকনিক্যালি সঠিক হলে আপনি সরাসরি একটি দূরবর্তী আপনার সমস্ত 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-datefetchকমান্ড এছাড়াও নিরাপদে বারবার চলবে। যদিও এটি 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এখানে পাওয়া যাবে।


1

নিম্নলিখিত স্ট্যাশ সঙ্গে কাজ করে না, কিন্তু কার্যকরী dir মধ্যে অনিবার্য পরিবর্তন সঙ্গে। এটি একটি শাখা তৈরি করে, সমস্ত বর্তমান পরিবর্তনগুলি স্বতঃসীমাবদ্ধ করে এবং রিমোটে ধাক্কা দেয়:

commit_and_push_ ( ) {
    # This will:
    #  1. checkout a new branch stash-XXX
    #  2. commit the current changes in that branch
    #  3. push the branch to the remote
    local locbr=${1:-autostash-XXX}
    git checkout -b $locbr
    git add .
    git commit -a -m "Automatically created commit"
    git push origin $locbr
    echo "Autocommitted changes in branch $locbr ..."
}

এর মতো ব্যবহার করুন:

commit_and_push_ my-temp-branch
commit_and_push_

0

আমি কেবল একটি নতুন স্ট্যাশ শাখা তৈরি করব এবং যখনই সেই শাখার প্রয়োজন হবে না তখন মুছে ফেলব।

git add . // Add work-in-progress job
git checkout -b stash-branch // Create and checkout to stash-branch
git commit -m 'WIP: job description' // Commit message
git push origin stash-branch // Push to remote
git pull origin stash-branch // Pull the stash-branch
git checkout master // Checkout to working branch
git rebase stash-branch // Rebase the stash-branch
git reset --soft // Equivalent to stash!!
git branch -d stash-branch // Delete when not needed from local
git push -d origin stash-branch // Delete when not needed from remote

-9

এই লোকটির মতোই ড্রপবক্স ব্যবহার করুন। আপনার সমস্ত কোড ব্যাক আপ হয়ে যাওয়ার কারণে আপনাকে স্ট্যাশগুলি ঠেকানোর বিষয়ে চিন্তা করতে হবে না।

http://blog.sapegin.me/all/github-vs-dropbox


2
কারও হাঁটু-ঝাঁকুনির প্রতিক্রিয়া হওয়ার আগে, আমি গিথুবের পরিবর্তে ড্রপবক্স ব্যবহার করতে বলছি না, তবে ড্রপবক্সে প্রতিশ্রুতি দেওয়ার জন্য প্রস্তুত নয় এমন কোডটি সংরক্ষণ করুন যা স্থানীয়ভাবে সংস্করণ নিয়ন্ত্রণে থাকবে।
এনওয়াইসি প্রযুক্তি প্রকৌশলী

4
এটি দূরবর্তী মেঘে সমস্ত প্রকল্প অনুলিপি করতে খুব বেশি সময় নেবে।
স্টাভ আলফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.