গিট: কেবলমাত্র "চিহ্নবিহীন" ফাইল তালিকাভুক্ত করুন (এছাড়াও, কাস্টম কমান্ড)


339

git ls-filesকেবল কোনও চিহ্নবিহীন ফাইলগুলি দেখানোর মতো কোনও কমান্ড ব্যবহার করার উপায় আছে কি ?

আমি জিজ্ঞাসার কারণ হ'ল আমি সমস্ত মুছে ফেলা ফাইলগুলি প্রক্রিয়া করতে নিম্নলিখিত কমান্ডটি ব্যবহার করছি:

git ls-files -d | xargs git rm

আমি আনরে্যাকড ফাইলগুলির জন্য অনুরূপ কিছু চাই:

git some-command --some-options | xargs git add

আমি -oবিকল্পটি খুঁজে পেতে সক্ষম হয়েছি git ls-files, তবে এটি আমি চাই না কারণ এটি উপেক্ষা করা ফাইলগুলিও দেখায়। আমি নিম্নলিখিত দীর্ঘ এবং কুরুচিপূর্ণ কমান্ডটি নিয়ে আসতে সক্ষম হয়েছি:

git status --porcelain | grep '^??' | cut -c4- | xargs git add

দেখে মনে হচ্ছে এখানে আরও ভাল কমান্ড ব্যবহার করতে পারি। এবং যদি তা না থাকে তবে আমি কীভাবে কাস্টম গিট কমান্ড তৈরি করব?


আপনার কী দরকার তা আপনি বিশদভাবে বলতে পারেন git ls-files -d | xargs git rm?
তাকেশিন

এটি গিট নোটিশগুলি অনুপস্থিত সমস্ত ফাইল সরিয়ে দেয়। আমার প্রশ্নটি কীভাবে সম্পর্কিত অপারেশন করবেন সে সম্পর্কে ছিল - সমস্ত ফাইল যুক্ত করুন যা গিটটি বর্তমানে ট্র্যাক করছে না। আমি সাধারণত দুটোই আমার কোড ফাইলগুলির নাম পরিবর্তন করে, সংহতকরণ এবং / অথবা বিভক্ত করার পরে করতাম।
আমরা সমস্ত মনিকা

যদি তারা নিখোঁজ হয় তবে তারা কি ইতিমধ্যে মুছে ফেলা হচ্ছে না? যদি না ... আপনি অন্য কোথাও থেকে টানেন এবং তারপরে আপনি রিমোটের সাথে সিঙ্ক করার চেষ্টা করছেন ... আমি মনে করি এটি পেয়েছি।
বাটাল বাটকস

আমি সমস্ত উত্তর পরীক্ষা করে দেখেছি, যদি শূন্য চিহ্নবিহীন ফোল্ডারটি থাকে তবে কেউ এটি খুঁজে পাবে না।
কিটিগার্ল

@ কিট্টিগার্ল এটি সঠিক। কারণ gitকেবল ফাইলগুলিতে কাজ করে, এতে খালি ফোল্ডারগুলি ট্র্যাক করার কোনও উপায় নেই। find . -type d -emptyপরিবর্তে চেষ্টা করুন।
আমরা সমস্ত মনিকা

উত্তর:


529

তালিকাভুক্ত ফাইলগুলি তালিকাভুক্ত করতে চেষ্টা করুন:

git ls-files --others --exclude-standard

আপনার যদি আউটপুটটি পাইপ করতে xargsহয় তবে সাদা স্পেসগুলি ব্যবহার করে git ls-files -zএবং xargs -0:

git ls-files -z -o --exclude-standard | xargs -0 git add

ট্রেডবিহীন ফাইল যুক্ত করার জন্য দুর্দান্ত নাম:

au = !git add $(git ls-files -o --exclude-standard)

সম্পাদনা করুন: রেফারেন্সের জন্য: গিট-এলএস-ফাইল


7
পারফেক্ট! !ওরফে লাইনের শুরুতে কী বোঝায়, বা কোথায় তা নথিভুক্ত হয়?
আমরা সমস্ত মনিকা

@ টাকেশিন কীভাবে কেবল পিতামাতার ডিরেক্টরি নাম পাবেন? সাবফোল্ডার নয়। এই অক্ষমযুক্ত ফাইলগুলির অর্থ: / পি / এ / ফাইলগুলি, / পি / এ / চিত্রগুলি, / পি / এ / / পি /, ... - আমি কেবল তালিকা / পি /
ডক্টর জ্যাকি

2
কোন পরিস্থিতিতে আপনার যদি উপন্যাসের প্রয়োজন হয় তবে? git add *একই জিনিসটি করবে: স্ট্যান্ডার্ড বাদ দিয়ে সমস্ত তালিকাভুক্ত ফাইল যুক্ত করুন (ফাইলগুলির পথগুলি আচ্ছাদিত রয়েছে .gitignore)।
toinetoine

1
আমি [alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
রেপোতে

ধন্যবাদ। ভাল মন্তব্য।
দারথ এগ্রিজিয়াস

71

আপনি যদি কেবল তালিকার চিহ্নবিহীন ফাইলগুলি সরাতে চান তবে এটি করুন:

git clean -df

xআপনি যদি বিশেষভাবে উপেক্ষা করা ফাইলগুলি অন্তর্ভুক্ত করতে চান তবে এতে যুক্ত করুন । আমি ব্যবহার করিgit clean -dfx একটি অনেক সারা দিন।

আপনি কেবল একটি স্ক্রিপ্ট লিখে git-whateverএবং এটি আপনার পথে রেখে কাস্টম গিট তৈরি করতে পারেন ।


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

5
কেবল করুন git add -Aবা git add -u(যার উপর নির্ভর করে আপনার আরও বোঝা যায়)
ডাস্টিন

1
আপনার মন্তব্যটি আসল উত্তর, যা পরে @ মাইক লোকোক
Andho

2
এবং "গিট ক্লিন- dfxn" শুকনো রান জন্য "এন" যোগ করুন
চ্যারো

50

git add -A -nআপনি যা চান তা করবে -Aরেপোতে সমস্ত চিহ্নবিহীন ফাইল যুক্ত করে, -nএটিকে এমন dry-runজায়গায় পরিণত করে যেখানে অ্যাডটি সম্পাদিত হয় না তবে স্ট্যাটাস আউটপুট দেওয়া হয় এমন প্রতিটি ফাইলের তালিকা দেওয়া যা যুক্ত করা হত


7
এটি একটি দুর্দান্ত উত্তর! দ্রষ্টব্য যে এটি ফাইলগুলিতে ফাইলগুলি বাদ দেয় .gitignoreযা সাধারণত আমরা যা চাই তা হয় তবে তা না হলে git add -fAn
cdunn2001

1
এটি সেরা উত্তর মত মনে হচ্ছে।
রব গ্রান্ট

1
এটি সেরা উত্তর। এটি ব্যবহারকারীকে স্পষ্টভাবে বলেছে যে এটি কী করবে (এটি না করে) এবং এটি যুক্ত করার আগে পর্যালোচনা করার সুযোগ দেয়। পারফেক্ট। ধন্যবাদ!
ডিজিটজি

এটি পরিবর্তিত ফাইল তালিকাভুক্ত করে।
ফ্রাঙ্ক-রেনে শ্যাফার

সুন্দর, কিন্তু আমি এটা আবৃত পাবেন: add '$file'git ls-files --exclude-standard -oউষ্ণ পাইপিং যেখানে একটি খালি আউটপুট দেয়।
হাইপারপ্যালিয়াম

28

গৃহীত উত্তর স্থান সহ ফাইলের নামগুলিতে ক্রাশ হয়। আমি এই মুহুর্তে উপন্যাস কমান্ড আপডেট করার পদ্ধতি সম্পর্কে নিশ্চিত নই, সুতরাং আমি উন্নত সংস্করণটি এখানে রাখব:

git ls-files -z -o --exclude-standard | xargs -0 git add

আমি মনে করি এটি সঠিক উত্তর, কারণ এটি প্রতিটি ফাইলের পরে তাদের উপর ক্রিয়া (গিট অ্যাডের মতো) সম্পাদনের পথ সরবরাহ করে
পাবলো বুর্গোস

27

সবকিছু খুব সহজ

সব untracked ফাইল তালিকা পেতে কমান্ড ব্যবহার Git অবস্থা সঙ্গে বিকল্প -u (--untracked-ফাইল)

git status -u

কিভাবে এটির পুনরাবৃত্তিযোগ্য সংস্করণটি সম্পর্কে?
ডেভিড

দুর্ভাগ্যক্রমে, এটি .gitignore ফাইলগুলির মাধ্যমে উপেক্ষা করা ফাইলের তালিকা করে।
প্লাফ

8
প্রাথমিক প্রতিশ্রুতিতে আমার উপেক্ষা করা ফাইলগুলি এটিই একমাত্র উত্তর, তবে আমাকে কমান্ডটি যুক্ত --ignoredকরতে হয়েছিলgit status -u
ডিএন

এটি সহজ এবং দুর্দান্ত।
এরিক ওয়াং

1
এই এছাড়াও শো পরিবর্তিত ফাইল। সুতরাং, প্রশ্নের কোনও উত্তর নয়: কেবল তালিকাভুক্ত ফাইলগুলি দেখান।
ওয়াইল্ডকার্ড

6

সম্ভাব্য যুক্ত করার জন্য ফাইলগুলি অনুসন্ধান করার সময়। আউটপুট git showএটি করে তবে এতে অন্যান্য প্রচুর স্টাফ রয়েছে। নিম্নলিখিত কমান্ডটি একই ফাইলগুলির তালিকা পেতে অন্য সমস্ত স্টাফ ছাড়াই কার্যকর।

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'

নির্দিষ্ট প্যাটার্নের সাথে মিলে যাওয়া ফাইলগুলি খুঁজে পেতে এবং তারপরে পাইপলাইন যুক্ত করার পরে পাইপলাইনে একত্রিত হয়ে এটি দরকারী git add

git status --porcelain | grep "^?? "  | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add

6

আমি এটির একটি পুরানো প্রশ্ন জানি, তবে তালিকার চিহ্নবিহীন ফাইলগুলির তালিকার ক্ষেত্রে আমি ভেবেছিলাম যে আমি অন্য একটি যুক্ত করব যা এমন তালিকার চিহ্নযুক্ত ফোল্ডারগুলিও তালিকাভুক্ত করবে:

আপনি কোন ফাইলটি (.gitignore ফাইল সহ) অপসারণ করবেন তা দেখানোর জন্য আপনি -n (ড্রাই রান) দিয়ে গিট ক্লিন অপারেশন ব্যবহার করতে পারেন:

git clean -xdn

এতে সমস্ত ফাইল এবং ট্র্যাক করা হয়নি এমন সমস্ত ফোল্ডার দেখানোর সুবিধা রয়েছে । পরামিতি:

  • x - সমস্ত চিহ্নবিহীন ফাইল দেখায় (গিট এবং অন্যদের দ্বারা উপেক্ষা যেমন বিল্ড আউটপুট ইত্যাদি সহ ...)
  • d - চিহ্নবিহীন ডিরেক্টরিগুলি দেখান
  • n- এবং সবচেয়ে গুরুত্বপূর্ণ! - ড্রাইআরুন, অর্থাত্ আসলে কিছু মুছবেন না, ফলাফলগুলি দেখানোর জন্য কেবল পরিষ্কার পদ্ধতি ব্যবহার করুন।

আপনি যদি ভুলে যান তবে এটির মতো এটি করা কিছুটা অনিরাপদ হতে পারে -n। তাই আমি সাধারণত এটি গিফ কনফিগারেশনে উপনাম করি।


2

পূর্ববর্তী সমস্ত উত্তর যা আমি পরীক্ষা করেছি সেগুলিও ফাইলগুলি প্রতিশ্রুতিবদ্ধ হওয়ার তালিকাবদ্ধ করে। এখানে একটি সহজ এবং সহজ সমাধান যা কেবলমাত্র সেই ফাইলগুলি তালিকাভুক্ত করে যা এখনও রেপোতে নেই এবং এর অধীন নয় .gitignore

git status --porcelain | awk '/^\?\?/ { print $2; }'

অথবা

git status --porcelain | grep -v '\?\?'

এটি তাদের নামের মতো একটি ফাইল রয়েছে এমন ফাইলগুলির সাথে ভালভাবে কাজ করছে বলে মনে হচ্ছে না
এসএসসি

-2

আমি মনে করি এটির মূল পোস্টারের মতো একই জিনিস হবে:

git add .


2
যতবার আপনি করেন git/svn add ., বিড়ালছানা মারা যায়।
নাকিলন

হেই, কেবলমাত্র যদি আপনি প্রত্যন্ত শাখাগুলির স্থানীয় কপিগুলিতে একগুচ্ছ ক্রাফ্ট পেয়ে থাকেন;) স্থানীয় শাখা তৈরি করুন এবং আপনি git add .দায়মুক্তি সহ করতে পারেন !
টিম ফুলমার

@ নকিলন, এজন্য আপনি .gitignoreসঠিকভাবে কনফিগার করেছেন । এখনও এড়ানো ভাল git add .। ভাল হয় git add -u
ওয়াইল্ডকার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.