উত্তর:
অতি সাম্প্রতিক স্ট্যাশ দেখুন:
git stash show -p
একটি নির্বিচার স্ট্যাশ দেখুন:
git stash show -p stash@{1}
git stash
ম্যানাপেজগুলি থেকে :
ডিফল্টরূপে, কমান্ডটি ডিফস্টেটটি দেখায়, তবে এটি গিট ডিফের জন্য পরিচিত যে কোনও বিন্যাস গ্রহণ করবে (উদাহরণস্বরূপ, প্যাচ ফর্মের দ্বিতীয় সাম্প্রতিক স্ট্যাশ দেখতে গিট স্ট্যাশ শো -p স্ট্যাশ @ {1))।
stash@{0}
ডিফল্ট; আপনি যদি পূর্ববর্তী স্ট্যাশগুলি দেখতে চান তবে আপনার কেবলমাত্র একটি যুক্তির প্রয়োজন।
{0}
।
-p
দাঁড়ায়?
অতি সাম্প্রতিক স্ট্যাশ দেখতে:
git stash show -p
একটি নির্বিচার স্ট্যাশ দেখতে:
git stash show -p stash@{1}
এছাড়াও, আমি কোনও শাখার সাথে স্ট্যাশ তুলনা করতে গিট ডিফ ব্যবহার করি।
তুমি ব্যবহার করতে পার:
git diff stash@{0} master
শাখা মাস্টারের তুলনায় সমস্ত পরিবর্তন দেখতে see
অথবা আপনি ব্যবহার করতে পারেন:
git diff --name-only stash@{0} master
কেবলমাত্র পরিবর্তিত ফাইলের নামগুলি সহজেই সন্ধান করতে।
git diff stash@{0} master
আপনি বর্তমান মাস্টারের বিরুদ্ধে আপনার স্ট্যাশগুলির ভিন্নতা পাবেন (যার মধ্যে স্ট্যাশ পরে মাস্টারের কাজ করা অন্তর্ভুক্ত রয়েছে) তৈরি করা হয়েছিল), স্ট্যাশ পরিবর্তিত হবে এমন ফাইল / লাইন নয়, যা প্রশ্নটি।
git difftool --tool=... stash@{0} HEAD
git diff stash@{0}^ stash@{0}
git diff stash@{0} master -- filename
একটি নির্দিষ্ট ফাইলের পরিবর্তনগুলি পেতে ফাইলের নাম যুক্ত করতে পারেন ।
যদি আপনার স্ট্যাশেড পরিবর্তিত শাখার উপর ভিত্তি করে পরিবর্তন করা হয় তবে এই আদেশটি কার্যকর হতে পারে:
git diff stash@{0}^!
এটি প্রতিশ্রুতিবদ্ধ যে এর উপর ভিত্তি করে বিরুদ্ধে স্ট্যাশ তুলনা করে।
~/.gitconfig
:laststash = diff stash@{0}^!
git difftool stash^!
প্রতিশ্রুতির বিরুদ্ধে সর্বশেষ git difftool stash HEAD
যদি আপনার কার্যকরী গাছটি নোংরা হয় তবে আপনি প্রথমে নোংরা কাজকারী গাছটি প্রতিশ্রুতিবদ্ধ করে স্ট্যাশের সাথে তুলনা করতে পারেন এবং তারপরে এটি স্ট্যাশের সাথে তুলনা করতে পারেন। এরপরে, আপনি নোংরা কাজের গাছের সাথে প্রতিশ্রুতিটি পূর্বাবস্থায় ফেরাতে পারেন (যেহেতু আপনি আপনার কমিট লগে এই নোংরা প্রতিশ্রুতি রাখতে চান না)।
একে অপরের সাথে দুটি স্ট্যাশের তুলনা করতে আপনি নিম্নলিখিত পদ্ধতিটিও ব্যবহার করতে পারেন (সেক্ষেত্রে আপনি প্রথমে কেবল একটি স্ট্যাশকে পপ করুন)।
আপনার নোংরা কাজ গাছ প্রতিশ্রুতিবদ্ধ:
git add .
git commit -m "Dirty commit"
সেই প্রতিশ্রুতি দিয়ে স্ট্যাশকে আলাদা করুন:
git diff HEAD stash@{0}
এরপরে, আপনি এই প্রতিশ্রুতিটি ফিরিয়ে দিতে পারেন এবং এটিকে কার্যক্ষম ডিয়ারে রেখে দিতে পারেন:
git reset --soft HEAD~1
git reset .
এখন আপনি আপনার স্ট্যাশ দিয়ে নোংরা কাজের গাছটিকে আলাদা করেছেন এবং আপনি যেখানে প্রথম দিকে ছিলেন সেখানে ফিরে এসেছেন।
git stash show -l
। এটি কাজের (নোংরা) অনুলিপিটির বিপরীতে সর্বশেষতম স্ট্যাশকে পৃথক করে? না পেয়ে আপনি কীভাবে এটি ব্যবহার করবেন error: switch l requires a value
?
git stash show -l
। কেন এটি আপনার পক্ষে কার্যকর হয় না, আমি কেবল অনুমান করতে পারি যে আপনি গিটের পুরানো সংস্করণে থাকতে পারেন? আমি গিটার v2.20.1 এ আছি এবং এটি ত্রুটিহীনভাবে নির্বিঘ্নে কাজ করে।
@ ম্যাগনের উত্তর হ'ল (খুব দেরিতে) তারিখ যা প্রশ্নের সর্বাধিক নমনীয় / দরকারী ব্যাখ্যার উত্তর দেয় তবে এটি প্রয়োজনের তুলনায় মোটামুটি জটিল। প্রতিশ্রুতিবদ্ধ ও পুনরায় সেট করার পরিবর্তে, কেবল আপনার কার্যকরী অনুলিপি স্ট্যাশ করুন, তুলনা করুন, এবং তারপরে স্ট্যাশ করুন।
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
এটি আপনাকে অস্থায়ীভাবে আপনার ওয়ার্কিং ফোল্ডারের পরিবর্তনগুলিকে স্ট্যাশ স্ট্যাকের শীর্ষে পরিণত করে স্ট্যাশ স্ট্যাকের শীর্ষ এবং আপনার কার্যকারী ফোল্ডারের মধ্যে পার্থক্য দেখায় (স্ট্যাশ @ {0}), উপরের মূলটিকে নীচে রেখে (স্ট্যাশ @ {1}) ) তারপরে 'নতুন সেট' পজিশনে আসল শীর্ষটি ব্যবহার করে তুলনা করুন যাতে আপনি আপনার বর্তমান কাজের উপরে এটি প্রয়োগ করে যে পরিবর্তনগুলি দেখতে পাবেন।
"তবে আমার যদি কোনও বর্তমান কাজ না হয়?" তাহলে আপনি স্বাভাবিক বিরক্তিকর ক্ষেত্রে রয়েছেন। শুধু অ্যাম্বারের উত্তরটি ব্যবহার করুন
git stash show
বা @ czerasz এর উত্তর
git diff stash@{0}
বা স্বীকার করুন যে স্ট্যাশিং এবং আনস্ট্যাশ করা যেকোন উপায়ে দ্রুত এবং সহজ, কেবল পরিবর্তনগুলি আনস্টাশ করে সেগুলি পরীক্ষা করুন। আপনি যদি এই মুহুর্তে না চান তবে তাদের (বর্তমান সূচি / কার্যকারী ফোল্ডার পরিবর্তন) দূরে ফেলে দিন। পূর্ণ যে
git stash apply
git diff
git reset
git checkout
git stash save -u
এটি আমার জন্য গিট সংস্করণ 1.8.5.2 এ কাজ করে:
git diff stash HEAD
git stash apply
।
সেক্ষেত্রে কার্যক্ষম গাছ এবং স্ট্যাশে কোনও ফাইলের তুলনা করতে নীচের কমান্ডটি ব্যবহার করুন
git diff stash@{0} -- fileName (with path)
যদি আপনার কাছে ডিফের জন্য সরঞ্জাম থাকে (তুলনার বাইরেও)
git difftool stash HEAD
git stash apply
।
HEAD
। আমি হেড অপসারণ করতে @ ইয়ারলিলবিলগিনের উত্তরটি সংশোধন করতে পারলাম তবে আমি মনে করি যে যে কেউ গিট ব্যবহার করেন তারা সেই অংশটি অনুধাবন করতে পারেন এবং আমার উত্তরটি দীর্ঘায়িত করা এটিকে কম পঠনযোগ্য করে তুলবে। @Yerlibilgin এর জন্য কোনও দোষ নেই।
কোনও কিছু না সরানো ছাড়া এটি করার একটি উপায় হ'ল patch
গিট ডিফের (মূলত ইউনিফাইড ডিফস) পড়তে পারে সেই সুযোগটি গ্রহণ করা
git stash show -p | patch -p1 --verbose --dry-run
এটি আপনাকে প্যাচ সাধারণভাবে কী করবে তার একটি ধাপে ধাপে পূর্বরূপ দেখায় show এর সাথে যুক্ত হওয়া সুবিধাটি হ'ল প্যাচটি কার্যত গাছে প্যাচটি লেখার হাত থেকে নিজেকে আটকাবে না, যদি কোনও কারণে আপনার যদি সত্যিই কমিটিং-আগে-সংশোধন করা সম্পর্কে গিট বন্ধ করার প্রয়োজন হয়, এগিয়ে যান এবং - ড্রাই - ভার্বোজ নির্দেশাবলী চালান এবং অনুসরণ করুন।
আমি এই থ্রেড এবং এই একটিতে যা শিখেছি তার সাথে মিল রেখে , যখন আমি "স্ট্যাশের ভিতরে কী আছে" দেখতে চাই, আমি প্রথমে চালিত:
git stash show stash@{0}
এটি দেখিয়ে দেবে যে কোন ফাইলগুলি সংশোধন করা হয়েছিল। তারপরে, একটি ডিফ্টলটিতে একটি দুর্দান্ত ভিজ্যুয়াল পার্থক্য পেতে, আমি এটি করি:
git difftool --dir-diff stash@{0} stash@{0}^
এটি তার পিতামাতার বিরুদ্ধে প্রদত্ত স্ট্যাশগুলির একবারে সমস্ত পার্থক্য প্রদর্শন করবে।
আপনি এতে ডিফ ডিভাইসগুলি কনফিগার করতে পারেন ~/.gitconfig
, যেমন মেল্ড সহ :
...
[diff]
tool = meld
এফডাব্লুআইডাব্লু এটি অন্য সমস্ত উত্তরগুলির জন্য কিছুটা রিডানডান্ট হতে পারে এবং এটি গ্রহণযোগ্য উত্তরের সাথে মিল রয়েছে যা দাগযুক্ত; তবে সম্ভবত এটি কাউকে সাহায্য করবে।
git stash show --help
আপনার যা প্রয়োজন তা আপনাকে দেবেন; স্ট্যাশ শো তথ্য সহ।
[<স্ট্যাশ>] দেখান
স্ট্যাশড স্টেট এবং এর মূল পিতামাতার মধ্যে পার্থক্য হিসাবে স্ট্যাশ-এ রেকর্ডকৃত পরিবর্তনগুলি দেখান। যখন কোনও দেওয়া হয় না, সর্বশেষটি প্রদর্শন করে। ডিফল্টরূপে, কমান্ডটি ডিফস্টেটটি দেখায়, তবে এটি গিট ডিফের জন্য পরিচিত যে কোনও বিন্যাস গ্রহণ করবে (উদাহরণস্বরূপ, প্যাচ ফর্মের দ্বিতীয় সাম্প্রতিক স্ট্যাশ দেখতে গিট স্ট্যাশ শো -p স্ট্যাশ @ {1))। আপনি ডিফল্ট আচরণ পরিবর্তন করতে stash.showStat এবং / অথবা stash.showPatch কনফিগার ভেরিয়েবল ব্যবহার করতে পারেন।
তিনি স্ট্যাশ তালিকা
git stash list
stash@{0}: WIP on feature/blabla: 830335224fa Name Commit
stash@{1}: WIP on feature/blabla2: 830335224fa Name Commit 2
সুতরাং স্ট্যাশ নম্বরটি পান এবং করুন:
আপনি করতে পারেন:
git stash show -p stash@{1}
তবে আপনি যদি কোনও ভিন্নতা চান (স্ট্যাশ দেখানোর জন্য এটি আলাদা, এই কারণেই আমি এই উত্তরটি লিখি your Diff
আপনার শাখায় বর্তমান কোডটি বিবেচনা করুন এবং show
আপনি কী প্রয়োগ করবেন তা কেবল দেখান )
তুমি ব্যবহার করতে পার:
git diff stash@{0}
অথবা
git diff stash@{0} <branch name>
আর একটি আকর্ষণীয় কাজ হ'ল:
git stash apply
git stash apply stash@{10}
এটি স্ট্যাশটিকে তালিকা থেকে অপসারণ না করে প্রযোজ্য, আপনি git checkout .
এই পরিবর্তনগুলি সরাতে পারেন বা আপনি যদি git stash drop stash@{10}
তালিকা থেকে কোনও স্ট্যাশ সরিয়ে খুশি হন।
এখান থেকে আমি কখনই git stash pop
কোনও সংমিশ্রণ ব্যবহার এবং ব্যবহার করার পরামর্শ দিচ্ছি না git stash apply
এবং git stash drop
যদি আপনি ভুল শাখায় কোনও স্ট্যাশ প্রয়োগ করেন ... তবে কখনও কখনও আপনার কোডটি পুনরুদ্ধার করা কঠিন।
স্ট্যাশের সাথে আপনি কী তুলনা করতে চান তার উপর নির্ভর করে (স্থানীয় কার্যনির্বাহী গাছ / পিতামাতার প্রতিশ্রুতি / প্রধান প্রতিশ্রুতি), সেখানে বেশ কয়েকটি কমান্ড পাওয়া যায় যার মধ্যে ভাল পুরাতন git diff
এবং আরও নির্দিষ্ট git stash show
:
╔══════════════════════╦═══════════════════════════════╦═══════════════════╗
║ Compare stash with ↓ ║ git diff ║ git stash show ║
╠══════════════════════╬═══════════════════════════════╬═══════════════════╣
║ Local working tree ║ git diff stash@{0} ║ git stash show -l ║
║----------------------║-------------------------------║-------------------║
║ Parent commit ║ git diff stash@{0}^ stash@{0} ║ git stash show -p ║
║----------------------║-------------------------------║-------------------║
║ HEAD commit ║ git diff stash@{0} HEAD ║ / ║
╚══════════════════════╩═══════════════════════════════╩═══════════════════╝
যদিও git stash show
প্রথম দর্শনে কেমন লাগে আরো ব্যবহারকারী বন্ধুত্বপূর্ণ, git diff
আসলে আরো শক্তিশালী এটা আরো একটি শ্রেনীর পরিবর্তন জন্য ফাইলের নামের উল্লেখ অনুমতি দেয় হয়। আমি ব্যক্তিগতভাবে আমার zsh git প্লাগইনে এই সমস্ত কমান্ডের জন্য উপকরণ স্থাপন করেছি ।