গিট সংগ্রহস্থল থেকে মার্জ করার পরে .orig ফাইলগুলি কীভাবে মুছবেন?


160

মার্জ করার সময় কীভাবে .orig ফাইলগুলি আমার গিট সংগ্রহস্থলে পরীক্ষা করা হয়, যা এখন পরিবর্তিত এবং অন-ট্র্যাক সেক্টরে প্রদর্শিত হয়। তবে আমি আর আমার ফাইলগুলিতে এই ফাইলগুলি চাই না। কিভাবে যে কি.

    modified:   Gemfile.lock.orig
    #   modified:   Gemfile.orig
    #   modified:   app/assets/images/bg_required.png.orig
    #   modified:   app/assets/javascripts/application.js.orig

    etc...

যে কোন ধরণের সাহায্য গ্রহন করা হবে.


সম্ভাব্য অনুরূপ stackoverflow.com/questions/61212/...
ziu

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

1
আমি চেক-ইন করা ফাইলগুলি সম্পর্কে অংশটি মিস করেছি। তবে .orig ফাইলগুলি মার্জেটুল দ্বারা লিখিত written এটি আমার কাছে পরিষ্কার-পরিচ্ছন্ন দ্বন্দ্বের সমাধান হিসাবে মনে হচ্ছে।
ziu

পুরো ইতিহাস থেকে আপনার ফাইলটি পুরোপুরি সরিয়ে ফেলতে হবে?
লুইকুইজ করুন

1
এই চেক আউট stackoverflow.com/questions/872565/...
ziu

উত্তর:


253

এক্ষেত্রে সর্বোত্তম সমাধান হ'ল এটিকে সহজ রাখা এবং এই ফাইলগুলি গিটের বাইরে স্বাধীনভাবে মুক্তি দেওয়া:

cd /your/repo/directory
find . -name '*.orig' -delete 

বিকল্পভাবে, উইন্ডোজ / পাওয়ারশেলে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন

cd \your\repo\directory
Get-ChildItem -Recurse -Filter '*.orig' | Remove-Item

14
যদি আপনি একটি প্রিকেট ত্রুটি পান তবে ব্যবহার করুন: -নম '* .রিগ' | xargs rm -f
নিল

যেমন একটি সতর্কতা, 'ফাইন্ড-ডিলিট' ব্যবহার করা বিপজ্জনক হতে পারে। ডিরেক্টরিটি (এই ক্ষেত্রে '।') আপনি যা মুছে ফেলতে চান তা কেবল মুছে ফেলছেন তা নিশ্চিত করার জন্য দয়া করে পরীক্ষা করে দেখুন
কিংডালিয়ন

8
এটি এমন ব্যথা যা এটি git clean -dfকরে না। আমাদের কেন ম্যানুয়ালি পিছনে ফেলে রাখা আবর্জনা পরিষ্কার করতে হবে?
শ্রীধর সারনোবাত

উইন্ডোজ সম্পর্কে কি?
Panzercrisis

3
@ পানজারক্রিসিস যদি আপনি উইন্ডোজ ব্যবহার করেন তবে আপনার সম্ভবত ইতিমধ্যে একটি টার্মিনাল এমুলেটর রয়েছে যার মাধ্যমে আপনি গিটের সাথে ইন্টারফেস করেন। আমি "gitforwindows" সুপারিশ করব যাতে অন্যান্য সমস্ত প্রয়োজনীয় সরঞ্জাম সহ BASH রয়েছে।
থেমির

151

git cleanআপনি এখানে বা এখানে খুঁজে পেতে পারেন আরও তথ্য চেষ্টা করুন


1
আমি অচিহ্নযুক্ত ফাইলগুলি পরিষ্কার করতে পারি, তবে ইতিমধ্যে ভান্ডারে থাকা এমন ফাইলগুলি সরিয়ে ফেলতে হবে।
ম্যাক্সিমাস ツ

আপনাকে প্রথমে সংগ্রহস্থল থেকে ফাইলটি সরিয়ে ফেলতে হবে git rm <filename>এবং তারপরে কমিট করতে হবে। এরপরে * .orig ফাইলটি গিট উপেক্ষা করুন।
আমার

4
আমি মনে করি এটি উত্তর হিসাবে চিহ্নিত হিসাবে একটি ভাল সমাধান।
অরগমির

51
git clean -iসত্যিই দুর্দান্ত। এটি আপনাকে মুছে ফেলা হবে এমন ফাইলগুলির একটি তালিকা দেবে এবং কীভাবে তালিকাটি মোকাবেলা করতে পারে তার বিকল্প দেয় (তালিকাটি ফিল্টার করুন, তালিকার সমস্ত কিছু মুছতে সক্ষম হবেন এবং কিছু অন্যান্য বিকল্প)।
পিপিপিউল

1
কেবলমাত্র * .orig ফাইলগুলি মুছতে সহায়তা করতে আপনি নিদর্শন সহ গিট ক্লিন ব্যবহার করতে পারেন: git clean -f -e '*.*' -e '!*.orig' কেবলমাত্র একটি ব্যতিক্রমী প্যাটার্ন রয়েছে তবে এতে নেতিবাচক নিদর্শনগুলির জন্য সামান্য সমর্থন রয়েছে। সুতরাং আমরা সমস্ত ফাইল বাদ দিতে পারি *.*এবং তারপরে কেবল ফাইলগুলি বাদ দিতে পারি না *.orig
leorleor


6

.Gitignore ব্যবহার করে আপনি ফাইলগুলি উপেক্ষা করতে পারেন

এখানে দেখানো মত তালিকায় কেবল * .orig রাখুন

https://help.github.com/articles/ignoring-files

বর্তমান ফাইলগুলি মুছে ফেলার জন্য আপনি শেল স্ক্রিপ্ট তৈরি করতে পারেন এবং নীচের মতো প্রকল্প ফোল্ডার থেকে চালাতে পারেন

for file in `find *.orig -type f -print`
do
   echo "Deleting file $file"
   git rm $file -f       
done

5
যদিও তিনি অবশ্যই এটি করতে পারেন, এখানে করা এটি সঠিক জিনিস নয় :)
সেরজিও টুলেন্টসিভ

1
আমি মনে করি এটি একটি ভাল ধারণা কারণ এটি ব্যাকআপ রাখে তবে মঞ্চযুক্ত ফাইলগুলিতে হস্তক্ষেপ করে না
মঞ্চযুক্ত

@ কাকেমিস - আপনিও তাই ভাবছেন তবে আপনি যখন কোডের জন্য গ্রেপ করছেন তখন আপনি যা চান তার চেয়ে দ্বিগুণ অনুসন্ধানের ফলাফল দেখতে পান (এটি আপনাকে সর্বশেষ কোডে যা আছে তার একটি ভ্রান্ত ধারণা দেয়)। এটি এত বিরল যে আমি কেবল অরিজিন ফাইল না থাকার ঝুঁকির সাথে বাঁচি। নিয়মিত প্রতিশ্রুতি দেওয়া ভাল।
শ্রীধর সারনোবাত

5

দুর্ভাগ্যক্রমে git cleanআমার পক্ষে কাজ করে না কারণ আমি *.origআমার বিশ্বব্যাপী গিটিংগোর ফাইলটিতে যুক্ত করেছি, তাই তারা পরিষ্কার থেকেও উপেক্ষা করা হয়। এমনকি দৌড়ানোও git clean -xভাল নয় কারণ আমি চাই না যে আমার সমস্ত উপেক্ষা করা ফাইল মুছে ফেলা হবে। git clean -iসহায়ক, তবে সত্যই আমি প্রতিটি ফাইল পর্যালোচনা করতে চাই না।

তবে আমরা বাদ পড়ার প্যাটার্নটি ব্যবহার করতে পারি এবং ম্যাচটিকে অস্বীকার করতে পারি। এই আদেশের সাথে পূর্বরূপ:

git clean -e '!*.orig' --dry-run

তারপরে আপনি যখন আত্মবিশ্বাসী হন, তখন forceপতাকাটি সত্যই মুছে ফেলুন:

git clean -e '!*.orig' -f

Leorleor এর মন্তব্য উপর ভিত্তি করে


3

git rm Gemfile.lock.orig এবং বাকি ফাইলগুলির আপনার প্রয়োজন নেই git commit --amend

এই ব্লবগুলি সম্পূর্ণরূপে অপসারণ করতে, git gc --prune=0 --aggressive


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

2

আমার জন্য git clean -fসমস্ত * .oig ফাইল সরানো হয়েছে। এবং ইতিমধ্যে যা ছিল সেখানে রাখে।

এটি (প্রায়) একত্রীকরণের পরে দেখতে যেমনটি দেখাচ্ছিল:

$ git status
On branch feature/xyz
Your branch is ahead of 'origin/feature/xyz' by 568 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .idea/codeStyles/
    .idea/misc.xml.orig

.idea/codeStyles/ একটি চিহ্নবিহীন ফাইল হিসাবে মার্জ হওয়ার আগেই সেখানে ছিল already .idea/misc.xml.orig(এবং আরও অনেক কিছু) সরিয়ে ফেলতে হয়েছিল।

=> ব্যবহার git clean -f:

$ git clean -f
Removing .idea/misc.xml.orig

ফলে:

$ git status
On branch feature/xyz
Your branch is ahead of 'origin/feature/xyz' by 568 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .idea/codeStyles/

0

আপনি সহজভাবে করতে পারেন git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm

টি এল; ডিআর;

git status -s আপনাকে সূচকের ক্ষেত্রে সমস্ত পরিবর্তিত / নিখোঁজ ফাইলগুলি পেতে দেয়

grep "\.orig$" ".orig" দ্বারা শেষ রেখে ফাইলগুলি ফিল্টার আউট

awk '{print $2}' ফাইলের নাম তালিকাভুক্ত করে (গিট তথ্য এড়িয়ে যাওয়া যেমন এ, এম, ??)

xargs -n1 -r echo rm মুদ্রণগুলি প্রতিটি আর্গুমেন্টের কমান্ড সরিয়ে দেয় (-n1: একবারে এক এবং -r: খালি থাকলে এড়িয়ে যান) কেবল ফাইলগুলি অপসারণের জন্য ডাবল-চেকিং কমান্ডগুলি অনুলিপি করুন এবং আটকান।


যদিও এটি লেখকদের প্রশ্নের উত্তর দিতে পারে, এতে কিছু ব্যাখ্যাকারী শব্দ এবং / অথবা ডকুমেন্টেশনের লিঙ্কের অভাব রয়েছে। আশেপাশে কিছু বাক্যাংশ ছাড়া কাঁচা কোড স্নিপেটগুলি খুব বেশি সহায়ক হয় না। আপনি কীভাবে একটি ভাল উত্তর লিখতে পারেন তা খুব সহায়ক। আপনার উত্তর সম্পাদনা করুন।
হেলো

-4

git rm <file>

http://git-scm.com/docs/git-rm

আপনার .gitignore ফাইলটিতে আপনি যে ফাইল / ডিরেক্টরি উপেক্ষা করতে চান তা যুক্ত করুন।


git rm <file> <file>শুধু তাদের তালিকা।
veritas1

তারপরে আপনাকে সমস্ত ফাইলগুলি তালিকাভুক্ত করতে হবে, বা rm গিট করার জন্য তাদের পাস করার জন্য একটি সরঞ্জাম ব্যবহার করতে হবে, বা একটি শেল গ্লোব এবং এগুলির উপর লুপ ব্যবহার করতে হবে। গিট এই মানক ইউনিক্স কমান্ড-লাইন কার্যকারিতাটির সদৃশ হয় না।
mabraham

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