কমান্ড লাইন গিট ব্যবহার করে, কীভাবে আমি গিটটি সংগ্রহস্থলটিতে ট্র্যাক করা ফাইলগুলির একটি তালিকা প্রদর্শন করতে পারি?
কমান্ড লাইন গিট ব্যবহার করে, কীভাবে আমি গিটটি সংগ্রহস্থলটিতে ট্র্যাক করা ফাইলগুলির একটি তালিকা প্রদর্শন করতে পারি?
উত্তর:
আপনি যদি বর্তমানে শাখার অধীনে ট্র্যাক করা সমস্ত ফাইলের তালিকা করতে চান তবে আপনি masterএই আদেশটি ব্যবহার করতে পারেন:
git ls-tree -r master --name-only
আপনি যদি এমন ফাইলগুলির একটি তালিকা চান যা সর্বদা বিদ্যমান (যেমন মুছে ফেলা ফাইলগুলি সহ):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
gitডিরেক্টরিগুলি সরাসরি সংস্করণে দেয় না। পরিবর্তে এটি ফাইল এবং তাদের পাথ সংরক্ষণ করে। ls-treeসমস্ত সংস্করণযুক্ত ফাইল আউটপুট হবে। এই পার্থক্যটি আরও ভালভাবে বুঝতে, একটি খালি ডিরেক্টরিতে স্টেজ করার চেষ্টা করুন git। খালি ডিরেক্টরিটি কখনই মঞ্চস্থ পরিবর্তনগুলিতে প্রদর্শিত হবে না। যেমন একটি খালি ডিরেক্টরি সংস্করণ করার একমাত্র উপায় হ'ল ডিরেক্টরিটির অধীনে কোনও ফাইলকে সংস্করণ করা। সংস্করণ নিয়ন্ত্রণে আপনার যেমন খালি স্থানধারক ডিরেক্টরি প্রয়োজন সেখানে ব্যবহারের ক্ষেত্রে আপনি ডিরেক্টরিটির অধীনে একটি ডামি ফাইল এবং সংস্করণ তৈরি করতে পারেন। আমি ব্যাখ্যা স্পষ্ট আশা করি।
ls-tree masterদেখায় না ।
গিট দ্বারা পরিচালিত ফাইলগুলি দ্বারা প্রদর্শিত হয় git ls-files। এর ম্যানুয়াল পৃষ্ঠাটি দেখুন।
ls... বাls -R
git ls-tree- এটি এর সাথে সম্পর্কিত pwd।
গৃহীত উত্তরগুলি কেবল বর্তমান ডিরেক্টরিতে থাকা ফাইলগুলিতে দেখায়। দেখানো সব (বর্তমান ডালে) যে প্রতিশ্রুতিবদ্ধ হয়েছে ট্র্যাক ফাইল, ব্যবহারের
git ls-tree --full-tree --name-only -r HEAD
--full-tree কমান্ডটি এমনভাবে চালিত করে যেন আপনি রেপোর রুট ডিরেক্টরিতে ছিলেন।-rউপ-ডিরেক্টরিতে পুনরাবৃত্তি করে। এর সাথে সম্মিলিত --full-tree, এটি আপনাকে সমস্ত প্রতিশ্রুতিবদ্ধ, ট্র্যাক করা ফাইল দেয়।--name-only আপনি যখন কেবল ফাইলের পাথগুলি চান তখন এর জন্য SHA / অনুমতি সম্পর্কিত তথ্য সরিয়ে দেয়।HEADআপনি কোন শাখার জন্য ট্র্যাকড, প্রতিশ্রুতিবদ্ধ ফাইলগুলির তালিকা চান তা নির্দিষ্ট করে। আপনি এটি masterবা অন্য কোনও শাখার নাম পরিবর্তন HEADকরতে পারেন , তবে আপনি এখনই যা প্রতিশ্রুতিটি পরীক্ষা করেছেন তা।~ সদৃশ প্রশ্নের https://stackoverflow.com/a/8533413/4880003 এর গৃহীত উত্তর থেকে এই পদ্ধতি ।
আপনি এটি দিয়ে রঙিন আউটপুট চাইবেন।
আমি বর্তমান শাখার বর্তমান ডিরেক্টরিতে ট্র্যাক করা ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করার জন্য এই ওয়ান-লাইনারটি ব্যবহার করি:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
আপনি এটি একটি উপন্যাস হিসাবে যুক্ত করতে চাইতে পারেন:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
আপনি যদি পুনরাবৃত্তভাবে ফাইলগুলি তালিকা করতে চান:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
এবং একটি উপনাম:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glrওরফে আপনি একটি বিট অদ্ভুত লাগছিল শর্ত তাই আমি একটি সংস্করণ প্রথম ওরফে আপনার দেওয়া বিন্যাস সঙ্গে আরো সামঞ্জস্যপূর্ণ করেছেন: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'। git version 2.20.1