আমলাতন্ত্রের কারণে, আমার রিপোর্টে আমার পরিবর্তিত সমস্ত ফাইলের একটি তালিকা পাওয়া দরকার (আমি বিদ্যমান উত্স কোড দিয়ে শুরু করেছি)।
এই তালিকাটি পেতে আমার কী দৌড়াতে হবে?
আমলাতন্ত্রের কারণে, আমার রিপোর্টে আমার পরিবর্তিত সমস্ত ফাইলের একটি তালিকা পাওয়া দরকার (আমি বিদ্যমান উত্স কোড দিয়ে শুরু করেছি)।
এই তালিকাটি পেতে আমার কী দৌড়াতে হবে?
উত্তর:
প্রদত্ত এসএইচএ এবং আপনার বর্তমান প্রতিশ্রুতিগুলির মধ্যে পরিবর্তিত ফাইলগুলির জন্য:
git diff --name-only <starting SHA> HEAD
বা যদি আপনি পরিবর্তিত-তবে-এখনও-প্রতিশ্রুতিবদ্ধ ফাইলগুলি অন্তর্ভুক্ত করতে চান:
git diff --name-only <starting SHA>
আরও সাধারণভাবে, নিম্নলিখিত সিনট্যাক্সটি সর্বদা আপনাকে বলবে যে দুটি ফাইলের মধ্যে কোন ফাইলগুলি পরিবর্তন হয়েছিল (তাদের এসএইচএ বা অন্যান্য নাম দ্বারা নির্দিষ্ট করা হয়েছে):
git diff --name-only <commit1> <commit2>
git diff --name-only <SHA> <SHA>^
--name-statusপরিবর্তে পতাকা ব্যবহার করা --name-onlyফাইলগুলির একটি তালিকা পেতে এবং তাদের সংশোধন স্থিতি, যেমন যুক্ত বা পরিবর্তিত হিসাবে দেখতে সুবিধাজনক।
--name-statusতাদের কী হয়েছে তা দেখায়
সমস্ত স্টেস্টেড না ট্র্যাক হওয়া পরিবর্তিত ফাইলের তালিকা করতে:
git diff --name-only
সমস্ত পর্যায়ের ট্র্যাক হওয়া পরিবর্তিত ফাইলের তালিকা করতে:
git diff --name-only --staged
সমস্ত পর্যায়বদ্ধ এবং স্টেস্ট না করা ট্র্যাক হওয়া পরিবর্তিত ফাইলগুলির তালিকা করতে:
{ git diff --name-only ; git diff --name-only --staged ; } | sort | uniq
সমস্ত তালিকাবিহীন ফাইল তালিকাবদ্ধ করতে (তালিকাভুক্ত ফাইলগুলি git status, যাতে কোনও উপেক্ষা করা ফাইল অন্তর্ভুক্ত নয়):
git ls-files --other --exclude-standard
যদি আপনি এটি শেল স্ক্রিপ্টে ব্যবহার করছেন, এবং আপনি প্রোগ্রামিকভাবে পরীক্ষা করতে চান যে এই আদেশগুলি কোনও কিছু ফেরত দিয়েছে কিনা, আপনি git diffএর --exit-codeবিকল্পটিতে আগ্রহী হবেন ।
যখন আমি অনেকগুলি ফাইল যুক্ত / সংশোধিত / মুছে ফেলেছি (শেষ প্রতিশ্রুতি থেকে), আমি কালক্রমে ক্রমে এই পরিবর্তনগুলি দেখতে চাই।
তার জন্য আমি ব্যবহার করি:
সমস্ত অ-পর্যায়িত ফাইলের তালিকা করতে:
git ls-files --other --modified --exclude-standard
প্রতিটি ফাইলের জন্য সর্বশেষ পরিবর্তিত তারিখটি পেতে:
while read filename; do echo -n "$(stat -c%y -- $filename 2> /dev/null) "; echo $filename; done
যদিও রুভিম মন্তব্যগুলিতে পরামর্শ দেয় :
xargs -0 stat -c '%y %n' --
এগুলি প্রাচীনতম থেকে আরও সাম্প্রতিকতে বাছাই করতে:
sort
একটি উপাধি ব্যবহার করা সহজ করে তোলে:
alias gstlast='git ls-files --other --modified --exclude-standard|while read filename; do echo -n "$(stat -c%y -- $filename 2> /dev/null) "; echo $filename; done|sort'
বা (খাটো এবং আরও দক্ষ, রুভিমকে ধন্যবাদ )
alias gstlast='git ls-files --other --modified --exclude-standard|xargs -0 stat -c '%y %n' --|sort'
উদাহরণ স্বরূপ:
username@hostname:~> gstlast
2015-01-20 11:40:05.000000000 +0000 .cpl/params/libelf
2015-01-21 09:02:58.435823000 +0000 .cpl/params/glib
2015-01-21 09:07:32.744336000 +0000 .cpl/params/libsecret
2015-01-21 09:10:01.294778000 +0000 .cpl/_deps
2015-01-21 09:17:42.846372000 +0000 .cpl/params/npth
2015-01-21 12:12:19.002718000 +0000 sbin/git-rcd
আমি এখন আমার পরিবর্তনগুলি পর্যালোচনা করতে পারি, প্রাচীন থেকে আরও সাম্প্রতিক to
xargsএবং একক কল ব্যবহার করবেন না stat? সম্পূর্ণ ওয়ান-লাইনার:git ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
আমার দুটি ফাইলের মধ্যে লিখিত সামগ্রী পরিবর্তিত হওয়া ফাইলগুলির একটি তালিকা প্রয়োজন (কেবলমাত্র যুক্ত বা সংশোধিত), তাই আমি ব্যবহার করেছি:
git diff --name-only --diff-filter=AM <commit hash #1> <commit hash #2>
গিট ডিফ ডকুমেন্টেশন থেকে পৃথক পৃথক-ফিল্টার বিকল্পগুলি :
পরিবর্তন-Filter = [(একটি | সি | ডি | এম | আর | টি | ইউ | এক্স | বি) ... [*]]
যুক্ত করা (এ), অনুলিপি (সি), মুছে ফেলা (ডি), পরিবর্তিত (এম), পুনর্নবীকরণ (আর) কেবলমাত্র ফাইলগুলি নির্বাচন করুন (যেমন নিয়মিত ফাইল, সিমিলিংক, সাবমডিউল,…) পরিবর্তিত (টি), নিমজ্জিত (ইউ) হয়, অজানা (এক্স), বা তাদের জুড়ি ভাঙা (বি) হয়েছে। ফিল্টার অক্ষরের যে কোনও সংমিশ্রণ (কোনওটিই সহ) ব্যবহার করা যাবে না। যখন * (সমস্ত-বা-কিছুই নয়) সংমিশ্রণে যুক্ত করা হয়, তুলনার ক্ষেত্রে অন্যান্য মানদণ্ডের সাথে মেলে এমন কোনও ফাইল উপস্থিত থাকলে সমস্ত পাথ নির্বাচন করা হয়; অন্য মানদণ্ডের সাথে মেলে এমন কোনও ফাইল যদি না থাকে তবে কিছুই নির্বাচন করা হয় না।
এছাড়াও, এই বড় হাতের অক্ষরগুলি বাদ দেওয়া যায় না can উদাহরণস্বরূপ --ডিফ-ফিল্টার = বিজ্ঞাপন যোগ এবং মুছে ফেলা পথ বাদ দেয়।
আপনি যদি স্থিতিটিও তালিকাবদ্ধ করতে চান (যেমন এ / এম), পরিবর্তন করুন --name-only করুন --name-status।
স্টেস্ট না করা পরিবর্তিত তালিকা ব্যবহার করে git statusএবং grepনীচের মত কমান্ড পাওয়া যাবে । এরকম কিছু git status -s | grep M:
root@user-ubuntu:~/project-repo-directory# git status -s | grep '^ M'
M src/.../file1.js
M src/.../file2.js
M src/.../file3.js
....
সঙ্গে git showআপনি যদি অনুরূপ ফলাফলের পেতে পারেন। git logঅন্তর্ভুক্ত ফাইলগুলির তালিকা সহ প্রতিশ্রুতিবদ্ধ (যেমন এটি দেখার মতো) দেখার জন্য ব্যবহার করুন:
git show --name-only [commit-id_A]^..[commit-id_B]
[commit-id_A]প্রাথমিক প্রতিশ্রুতিবদ্ধটি কোথায় এবং [commit-id_B]আপনি প্রদর্শন করতে চেয়ে শেষ প্রতিশ্রুতিবদ্ধ।
^প্রতীক সহ বিশেষ মনোযোগ । যদি আপনি এটি না রাখেন তবে কমিট-আইডি_এ তথ্য মোতায়েন করা হবে না।
যদি আপনি পরিবর্তিত ফাইলগুলি পরীক্ষা করতে চান তবে আপনাকে অনেকগুলি ছোট ছোট জিনিসের যত্ন নেওয়া দরকার যেমন আপনি ব্যবহার করতে পারেন তবে যেমন আপনি যে ফাইলটি পরিবর্তন করেছেন তা পরীক্ষা করতে চান তবে টাইপ করুন
গিট স্ট্যাটাস - এটি পরিবর্তনগুলি সহ ফাইলগুলি দেখায়
তারপরে আপনি কী কী পরিবর্তন করতে হবে তা যদি জানতে চান তবে এটি বিভিন্নভাবে পরীক্ষা করা যেতে পারে,
গিট ডিফ - সমস্ত ফাইলের সমস্ত পরিবর্তন দেখাবে
কেবলমাত্র একটি ফাইল পরিবর্তিত হলেই এটি ভাল
এবং যদি আপনি নির্দিষ্ট ফাইলটি চেক করতে চান তবে ব্যবহার করুন
গিট বিভিন্ন