গিটে স্ট্যাশ সামগ্রীর পূর্বরূপ দেওয়া কি সম্ভব?


554

আমি প্রায়শই পরে কাজটি দূরে রাখি, তারপরে অন্যান্য জিনিসপত্র উপস্থিত হয় এবং কয়েক সপ্তাহ পরে, আমি স্ট্যাশটি পর্যবেক্ষণ করতে চাই এবং এটি জানতে চাই যে আমি যদি বর্তমান অবস্থায় এটি গাছের গাছের সাথে প্রয়োগ করি তবে কী পরিবর্তন হবে।

আমি জানি আমি স্ট্যাশগুলিতে গিটের পার্থক্য করতে পারি, তবে এটি আমাকে কার্যকারী গাছ এবং স্ট্যাশগুলির মধ্যে সমস্ত পার্থক্য দেখায়, তবে স্ট্যাশ প্রয়োগ কী পরিবর্তন করতে চলেছে তা জানতে আমি আগ্রহী।

কিভাবে আমি এটি করতে পারব?


1
বর্ণযুক্ত ডিফার্ট আউটপুট: git stash show -p stash@{1} >~/.diff && vim ~/.diff( vimকোনও পাঠ্য সম্পাদক হওয়া উচিত নয় যতক্ষণ না আপনার পাঠ্য সম্পাদকটিতে diffআউটপুটের জন্য সিনট্যাক্স হাইলাইটিং সমর্থন থাকে )।
ট্রেভর বয়েড স্মিথ

উত্তর:


727

git stash showআপনার অতি সাম্প্রতিক স্ট্যাশ-এ পরিবর্তিত ফাইলগুলি আপনাকে দেখাবে। আপনি -pভিন্নতা দেখানোর বিকল্পটি যুক্ত করতে পারেন ।

git stash show -p

আপনি যে স্ট্যাশটিতে আগ্রহী তা যদি সাম্প্রতিকতম না হয় তবে কমান্ডের শেষে স্ট্যাশটির নাম যুক্ত করুন:

git stash show -p stash@{2}

এটি দেখতে দুর্দান্ত, এবং আমি এটি ম্যানুয়ালটিতে দেখছি, তবে আমি যখন চেষ্টা করি তখন তা আমাকে দেয় fatal: unable to create temp-file: Invalid argument- কোনও ধারণা কেন?
বেনজল

29
git stash show -p stash@{0}একটি নির্দিষ্ট স্ট্যাশ দেখতে ব্যবহার করুন । 0 সর্বশেষ স্বনটি দেখায়, 1 দ্বিতীয় সর্বশেষ এক .. ইত্যাদি git stash listসমস্ত উপলভ্য দেখায়।
ব্রিটা_

6
আপনি যদি পাওয়ারশেল ব্যবহার করে থাকেন তবে আপনাকে স্ট্যাশ নামটি উদ্ধৃতিতে রাখতে হবে। (যেমন git stash show -p 'stash@{0}':)
স্কট-প্যাসকো


1
আপনি যদি ফাইলের ব্যবহারে git stash show -p stash@{0}> stash.txt
ভিন্নতা

87

স্ট্যাশগুলির বর্তমান তালিকাটি দেখতে:

git stash list

আপনি এর মতো একটি তালিকা দেখতে পাবেন:

stash@{0}: WIP on ...
stash@{1}: ...
stash@{2}: ...
...

এই স্ট্যাশগুলির যে কোনওটিতে ভিন্নতা দেখতে:

git stash show -p stash@{n}

34

gitkগিট রেপো ভিজ্যুয়ালাইজ করার জন্য আমি গ্রাফিকাল ইউআইয়ের অনুরাগী । আপনি স্ট্যামিত শেষ আইটেমটি দেখতে পারেন:

gitk stash

আপনি আপনার যেকোন স্ট্যাশড পরিবর্তন (যেমন তালিকাভুক্ত git stash list) দেখুন ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:

gitk stash@{2}

নীচের স্ক্রিনশটে আপনি স্ট্যাশকে উপরের বামে কমিট হিসাবে দেখতে পাবেন, কখন এবং কোথায় এটি ইতিহাসের ইতিহাসে এসেছে, নীচের ডানদিকে পরিবর্তিত ফাইলগুলির তালিকা এবং নীচে লাইন-লাইন পার্থক্য রয়েছে -left। সমস্ত স্ট্যাশ এখনও টোকা করা হয়।

স্টিক দেখছি


5
stash@{X}একবারে আরও ফলাফল দেখতে আপনি কমান্ড-লাইনে একাধিক মান সরবরাহ করতে পারেন তবে গিটকে 'সমস্ত স্ট্যাশ এন্ট্রি দেখান' বলার সহজ উপায় আমি খুঁজে পাইনি।
নোটার

5
gitk stashসংক্ষিপ্ত বলে মনে হচ্ছেgitk stash@{0}
লিফ গ্রুইনওল্ড

3
গিটকে সমস্ত স্ট্যাশ দেখানোর জন্য আপনি ব্যবহার করতে পারেন gitk `git stash list --pretty=format:%gd`এবং তারপরে পরবর্তী স্ট্যাশে যাওয়ার জন্য "ডাব্লুআইপি অন" সন্ধান করুন।
ইকার পোহোরস্কি

2
gitk --reflogআপনাকে সমস্ত স্ট্যাশ এবং আরও অনেক কিছু দেখতে দেয়।
নোবার

1
গিটক হ'ল একমাত্র হাতিয়ার যা আমাকে সরাসরি দেখিয়েছিল যে স্ট্যাশ-এ স্ট্র্যাশ-এ থাকা ফাইলগুলি সংরক্ষণ না করে রাখা আছে। অন্যরা সবাই আমাকে "কোনও পার্থক্য নেই" দেখিয়েছে।
মার্টিন বোনার

22

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

git stash show -p stash@{0}

একটি আন-পপড স্ট্যাশে একটি নির্দিষ্ট ফাইলের পরিবর্তনগুলি দেখতে:

git diff HEAD stash@{0} -- path/to/filename.php

যদি কেউ ফাইলের নামগুলি মনে না রাখে তবে এটি সমস্ত ফাইলের জন্যও কাজ করে যা গিট ডিফের পরিবর্তিত হয় HE 0}
সাইমন

কেবল স্বচ্ছতার জন্য: এর -pজন্য সংক্ষিপ্ত --patch। বিকল্প থেকে আসে git-diff। আপনি যদি দীর্ঘ ফর্মটি পছন্দ করেন তবে আপনি লিখতে পারেন git stash show --patch
পিটারিনো

5

গিটকের সুপারিশের বাইরে গিটের মধ্যে স্ট্যাশ সামগ্রীর প্রাকদর্শন করা কি সম্ভব? আপনি টিগ এবং কল ইনস্টল করতে পারেন tig stash। এই ফ্রি / ওপেন কনসোল প্রোগ্রামটি আপনাকে কোন স্ট্যাশকে তুলনা করতে হবে তা চয়ন করতে সহায়তা করে


1
একাধিক স্ট্যাশ পরিচালনা করার জন্য এক নিখুঁত সরঞ্জাম বলে মনে হচ্ছে! আপনি যথাক্রমে এবং কীগুলি সহ স্ট্যাশগুলি পপ এবং ড্রপ করতে পারেন । P!
ইকার পোহোরস্কে

টিউআই বিকল্প সবসময় ভাল, তবে ইতিমধ্যে ব্যবহৃত লোকের জন্য বা কোনওভাবে পছন্দ করা লোকের gitk পক্ষে সমস্ত স্ট্যাশগুলি দেখানোর জন্য এটি হ্যাক করা অপেক্ষাকৃত সহজ
1737973

4

আমি রঙিন বর্ণের হাইলাইটিংয়ের সাথে আমার সমস্ত স্ট্যাশগুলি দেখতে দেখতে এটি ব্যবহার করেছি (ফেডোরায় 21):

git stash list | 
  awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n"; 
  system("git -c color.ui=always stash show -p " $1); }' | 
  less -R

( গিট থেকে অভিযোজিত : স্ট্যাশ প্রয়োগ না করে কোনও স্ট্যাশ কী রয়েছে তা দেখুন )


4

যখন এই প্রশ্নটি প্রথম জিজ্ঞাসা করা হয়েছিল, এটি কোনও বিকল্প নাও হতে পারে তবে আপনি যদি পাইচার্ম ব্যবহার করেন তবে আপনি UnStash Changesসরঞ্জামটি (ভিসিএস-> গিট-> আনস্ট্যাশ পরিবর্তনগুলি ...) ব্যবহার করতে পারেন । এটি আপনাকে স্ট্যাশড পরিবর্তনের তালিকা, পাশাপাশি পপ, ড্রপ, সাফ, বা প্রয়োগ করতে (ইচ্ছুক হলে একটি নতুন শাখায়) দেখতে দেয়:

উইন্ডো আনস্টাশ করুন

এবং প্রতি স্ট্যাশ পরিবর্তিত ফাইলগুলি দেখুন:

উইন্ডোতে প্রভাবিত পাথগুলি

পাশাপাশি ফাইল প্রতি পৃথক্। বিভিন্ন শাখায় আপনি স্ট্যাশড পরিবর্তনগুলি থেকে কার্যকারী শাখায় (বাম-নির্দেশক শেভ্রন ব্যবহার করে) প্রয়োগ করতে পৃথক পরিবর্তনগুলি চেরি-বাছাই করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন


3

আপনি নিম্নলিখিত কমান্ড দ্বারা সমস্ত স্ট্যাশের তালিকা দেখতে পারেন:

$ git stash list

stash@{0}: WIP on dev: ddd4d75 spelling fix

stash@{1}: WIP on dev: 40e65a8 setting width for messages

......

......

......


stash@{12}: WIP on dev: 264fdab added token based auth

নবীনতম স্ট্যাশ প্রথমটি।

nউপরের তালিকায় প্রদত্ত স্ট্যাশগুলির সূচকটি আপনি কেবল নির্বাচন করতে পারেন এবং স্ট্যাশড বিশদটি দেখতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন

git stash show -p stash@{3}

একইভাবে,

git stash show -p stash@{n}

আপনি কমান্ডটি ব্যবহার করেও পৃথকটি পরীক্ষা করতে পারেন:

git diff HEAD stash@{n} -- /path/to/file

3

হ্যাঁ যা পরিবর্তন করা হয়েছে তা দেখার সর্বোত্তম উপায় হ'ল ফাইলটিতে সংরক্ষণ করা:

git stash show -p stash@{0} > stash.txt

2

প্রথমে আমরা সমস্ত স্ট্যাশ আইটেমগুলি পেতে গিট স্ট্যাশ তালিকাটি ব্যবহার করতে পারি:

$git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ....
stash@{2}: WIP on ...

তারপরে আমরা git stash show stash@{N}একটি নির্দিষ্ট স্ট্যাশের অধীনে ফাইলগুলি পরীক্ষা করতে ব্যবহার করতে পারি N। যদি আমরা এটি গুলি চালাই তবে আমরা পেতে পারি:

$ git stash show stash@{2}
fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

এর কারণ হতে পারে শেলটি কোঁকড়ানো ধনুর্বন্ধনী এবং গিট দেখে stash@2না খেয়েছে stash@{2}। এবং এটি ঠিক করার জন্য আমাদের ধনুর্বন্ধনীগুলির জন্য একক উদ্ধৃতি ব্যবহার করা দরকার:

git stash show stash@'{2'}
com/java/myproject/my-xml-impl.xml                     | 16 ++++++++--------
com/java/myproject/MyJavaClass.java                    | 16 ++++++++--------
etc.

2

স্ট্যাশড পরিবর্তনের তালিকা দেখুন

git stash list

ফাইলগুলির তালিকা দেখার জন্য একটি নির্দিষ্ট স্ট্যাশে পরিবর্তন করা হয়েছে

git stash show -p stash@{0} --name-only

স্ট্যাশ-এ কোনও নির্দিষ্ট ফাইল দেখার জন্য

git show stash@{0} path/to/file

1

সমস্ত স্ট্যাশ দেখান

কেবলমাত্র ফাইলের নাম:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done

সমস্ত স্ট্যাসে সম্পূর্ণ ফাইল সামগ্রী:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done

আপনি space ( ফরওয়ার্ড ) এবং b( পিছনের দিকে ) পেজ qকরতে এবং বর্তমান স্ট্যাশের জন্য পেজার বন্ধ করতে রঙিন ডিফার আউটপুট পাবেন । আপনার যদি এটি কোনও ফাইলে থাকে তবে > stashes.diffকমান্ডটি যুক্ত করুন।


1

বিদ্যমান উত্তরগুলি ছাড়াও যা ব্যবহার করার পরামর্শ দেয় (তৃতীয় থেকে শেষের স্ট্যাশের ভিন্নতা দেখানোর জন্য)

git stash show -p stash@{2}

নোট করুন যে git-stashডকুমেন্টেশনে এটি লেখা আছে

স্ট্যাশগুলি কেবল স্ট্যাশ সূচক (যেমন পূর্ণসংখ্যার nসমতুল্য stash@{n}) নির্দিষ্ট করে উল্লেখ করা যেতে পারে ।

সুতরাং এটি ব্যবহার করাও সম্ভব (এটি উপরের আদেশের সমতুল্য)

git stash show -p 2

যা কিছু পাওয়ারশেল সমস্যা এড়ানো উচিত ।


1

আমি পছন্দ করি যে কীভাবে gitkআপনাকে অনাক্ষরযুক্ত বা সূচীতে বসে ছিল ঠিক কীভাবে তা দেখাতে পারে তবে ডিফল্টরূপে এটি স্ট্যাশগুলি বর্তমান শাখায় আপনার অন্যান্য সমস্ত কমিটের মাঝখানে "কমিটগুলি" দেখায় "

কৌশলটি গিটকে নিম্নরূপে চালানো হবে:

gitk "stash@{0}^!"

(উদ্ধৃতিটি পাওয়ারশেলটিতে এটি কাজ করার জন্য রয়েছে তবে এটি অন্য শেলগুলিতে এখনও কাজ করা উচিত))

আপনি যদি গিটরিভিশন সহায়তা পৃষ্ঠায় এই বাক্য গঠনটি সন্ধান করেন তবে আপনি নিম্নলিখিতটি পাবেন:

r1^!স্বরলিপি কমিট অন্তর্ভুক্ত R1 কিন্তু সব তার বাবা বাদ দেয়। নিজেই, এই স্বরলিপিটি একক প্রতিশ্রুতি r1 বোঝায় ।

এটি দৃশ্যত এমন মোডে গিটকে রাখবে যে কেবলমাত্র নির্বাচিত প্রতিশ্রুতিগুলির তাত্ক্ষণিক পিতামাতাকে দেখানো হবে, যা আমি পছন্দ করি ঠিক তেমনই।


আপনি যদি এটিকে আরও এগিয়ে নিয়ে যেতে চান এবং সমস্ত স্ট্যাশগুলির তালিকা তৈরি করতে চান তবে আপনি এটি চালাতে পারেন:

gitk `git stash list '--pretty=format:%gd^!'`

(ব্যাকটিকসের অভ্যন্তরে single একক উক্তিগুলি বাশকে সন্তুষ্ট করার জন্য প্রয়োজনীয়, অন্যথায় এটি বিস্মৃত চিহ্নের বিষয়ে অভিযোগ করে)

আপনি যদি উইন্ডোজ এবং সিএমডি বা পাওয়ারশেল ব্যবহার করছেন:

gitk "--argscmd=git stash list --pretty=format:%gd^!"

0

নীচের কমান্ডটি অন্য কোনও স্ট্যাশ বা প্রতিশ্রুতিবদ্ধ বা শাখা বা হেডের পুনরায় স্টেশেড পরিবর্তনের আলাদা আলাদা নিষ্কাশন করতে ব্যবহার করা যেতে পারে।

git stash show
git show
git diff
git difftool

আসুন দেখুন, আমরা উল্লিখিত প্রতিটি কমান্ড কীভাবে ব্যবহার করতে পারি।

  1. গিট স্ট্যাশ শো

সরল কমান্ড গিট স্ট্যাশ শো ফাইলের পরিবর্তনের খুব সংক্ষিপ্ত সংক্ষিপ্তসার দেয়, তবে বর্তমানের হেডের বিপরীতে পরিবর্তনের ভিন্নতা প্রদর্শন করবে না।

  1. গিট শো

গিট-শো কমান্ডটি বিভিন্ন ধরণের অবজেক্ট দেখতে ব্যবহৃত হয়।

গিট-শো কমান্ডটি কেবল স্ট্যাশ পরিবর্তনগুলি কল্পনা করতেই ব্যবহৃত হয় না, তবে ব্লবস, ট্রি, ট্যাগ এবং কমিটের মতো এক বা একাধিক অবজেক্ট দেখতেও ব্যবহৃত হয়।

  1. গিট বিভিন্ন

কমান্ড গিট-ডিফ একটি সাধারণ কমান্ড যা কমিট, কমিট এবং ওয়ার্কিং ট্রি ইত্যাদির মধ্যে পরিবর্তন দেখাতে ব্যবহৃত হয় command

ডিফল্টরূপে, গিট ডিফ অন্য স্ট্যাশ রেফারেন্স বা প্রতিশ্রুতি নির্দিষ্ট না করা না হলে সংগ্রহের বর্তমান অবস্থার (পরিবর্তিত ফাইল) বিপরীতে নির্বাচিত স্ট্যাশগুলির পৃথকতা প্রদর্শন করবে f

শীর্ষ সর্বাধিক স্ট্যাশ স্ট্যাশ @ {0} এবং মাস্টার শাখার মধ্যে পার্থক্য পেতে:

it গিট ডিফ স্ট্যাশ @ {0} মাস্টার

পরিবর্তনগুলির চেয়ে পৃথক নয় কেবল ফাইলের নামগুলি প্রদর্শন করুন:

it গিট ডিফ - নামমাত্র কেবল স্ট্যাশ @ {0} মাস্টার

নির্বাচিত ফাইলের জন্য নির্বাচিত স্ট্যাশগুলির মধ্যে পার্থক্যটি দেখুন:

it গিট ডিফ স্ট্যাশ @ {0} ^ 1 স্ট্যাশ @ {0} -

  1. গিট ডিফ্টল

নির্বাচিত স্ট্যাশ এবং নির্বাচিত প্রতিশ্রুতি বা শাখা বা স্ট্যাশগুলির মধ্যে পার্থক্য খুঁজে পেতে গিট-ডিফ্টল কমান্ডটিও ব্যবহার করা যেতে পারে

সর্বশেষ দুটি স্ট্যাসের মধ্যে পার্থক্য দেখুন:

it গিট ডিফ্টল স্ট্যাশ @ {0} স্ট্যাশ @ {0} ^ 1

গিট ডিফ্টল - ডিডির-ডিফ স্ট্যাশ @ {0} স্ট্যাশ @ {0} ^ 1

সারসংক্ষেপ:

কমান্ডগুলি যা নির্বাচিত স্ট্যাশ গিট স্ট্যাশ শো, গিট শো, গিট ডিফ, গিট ডিফ্টল থেকে আলাদা করতে সক্ষম।

কমান্ড গিট স্ট্যাশ শো ব্যবহার করে পার্থক্য দেখুন,

গিট স্ট্যাশ শো -পি স্ট্যাশ @ {0}

কমান্ড গিট শো ব্যবহার করে স্ট্যাশ-এ পরিবর্তনগুলি দেখুন,

গিট শো স্ট্যাশ @ {1}

কমান্ড গিট ডিফ ব্যবহার করে সর্বশেষ স্ট্যাশ এবং নির্বাচিত কমিটের মধ্যে পার্থক্য দেখুন,

গিট ডিফ স্ট্যাশ @ {0}

তথ্যসূত্র:

https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/

https://git-scm.com/docs/git-show

https://git-scm.com/docs/git-stash

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