.Git ফাইল ব্যতীত একটি ফোল্ডারটি টার?


16

যদি আমি একটি ফোল্ডারটি গিট রিপোজিটরিতে ট্যারি করি, তবে কি আমি .gitসম্পর্কিত ফাইলগুলি না যুক্ত করে তা করতে পারি ? যদি তা না হয় তবে আমি কীভাবে কোনও কমান্ডের মাধ্যমে এটি করতে যাব?

উত্তর:


24

প্রথমে একবার দেখুন git help archive। archiveএকটি গিট কমান্ড যা কেবল গিট ট্র্যাকড ফাইল যুক্ত সংরক্ষণাগার তৈরি করতে দেয়। সম্ভবত আপনি যা খুঁজছেন ম্যান পৃষ্ঠার শেষে তালিকাভুক্ত একটি উদাহরণ:

git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz

6
এটি কেবল রুট গিট রেপোর সংরক্ষণাগার। সাবমডিউলগুলি ব্যবহার করা হলে - তাদের ডিরেক্টরিগুলি খালি থাকবে।
— স্ট্যান

@ স্ট্যান: ধন্যবাদ, অন্য সাব-মডিউল ব্যবহারকারী থেকে
— মার্ক কে কোয়ান

22

সহজ উত্তর: অ্যাড --exclude-vcs। এটি সমস্ত সংস্করণ নিয়ন্ত্রণ সিস্টেম ডিরেক্টরি বাদ দেয়

ব্যক্তিগতভাবে আমি ব্যবহার করি

tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME

সুতরাং আপনাকে যা করতে হবে তা হ'ল --exclude-vcsকমান্ডের শেষে যুক্ত করুন ।


1
সমস্ত পরিচিত , আমি মনে করি? ;)
— পিএইচকে

3
জিএনইউ / লিনাক্সে যুক্তির আগে সমস্ত বিকল্প একসাথে হওয়া দরকার।
— জোশ হাবদাস

2
জিএনইউ / লিনাক্সের জন্য যেমন বলা হয়েছেtar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
— মাইকেল আইরি

1
দেখে মনে হচ্ছে ওএসএক্স কাতালিনার টার সেই বিকল্পটিকে সমর্থন করে না ...
— ফ্রেঞ্চ মারজোোয়া

21

আপনি Git দ্বারা ট্র্যাক ফাইল, কিন্তু না Git সংগ্রহস্থলের নিজেই বা কোন উত্পন্ন বা অন্যথায় untracked ফাইল অন্তর্ভুক্ত করা সংরক্ষণাগার চান, তাহলে ব্যবহারgit archive ।

আপনি যদি বিশেষত .gitলিনাক্স বা ফ্রিবিএসডি বা ওএসএক্স বা সিগউইনের অধীনে অন্য সমস্ত কিছু বাদ দিতে বা অন্তর্ভুক্ত করতে চান তবে একটি ডিরেক্টরি বাদ দেওয়ার জন্য টারের একটি সহজ বিকল্প রয়েছে:

tar -c --exclude .git -f - foo | gzip >foo.tgz

জিএনইউ টার (যেমন লিনাক্স বা সাইগউইনের অধীনে) দিয়ে আপনি এটি সংক্ষিপ্ত করতে পারেন tar czf foo.tgz --exclude .git foo।

সংরক্ষণাগারগুলি তৈরির পসিক্স উপায় pax।

pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz

কি gitকোনো ব্যবস্থা যেখানে উপর প্রনয়ন tarপাওয়া যাচ্ছে না? :-)
— স্টাফেন গিমেনেজ

3
@ StéphaneGimenez সম্ভবত না। কিন্তু এটা যেখানে সিস্টেমে কম্পাইল করে tarকোন হয়েছে --excludeযেমন OpenBSD যেমন বিকল্প, (যা বোঝা যাচ্ছে যে নেতারা প্যাক্স এর সদৃশ sবিকল্প, কিন্তু যে একটি সাধারণ আলকাতরা কমান্ড সিনট্যাক্স এক্সটেনশন নয়)।
— গিলস 'অশুভ হওয়া বন্ধ করুন'

0

ধন্যবাদ একটি উত্তর আমি আমার প্রশ্নগুলির একটির পেয়েছিলাম আমি অন্য সমাধান মূর্ত আউট। সুতরাং সম্পূর্ণতার জন্য, এখানে একটি সমাধান তৈরির ব্যবহার রয়েছে find:

find . -path './.git' -prune -o -print |
  tar -czvf ../archive.tgz --no-recursion -T -

এবং আপনি যদি সম্ভাব্য .gitফোল্ডারগুলি (সাব) + ফোল্ডারের ভিতরে রাখতে চান তবে :

find . -path '*/.git' -prune -o -print |
  tar -czvf ../archive.tgz --no-recursion -T -

পরেও এর মাধ্যমে অর্জন করা যায়:

find . -type d -name '.git' -prune -o -print |
  tar -czvf ../archive.tgz --no-recursion -T -

আপনি যদি অন্যান্য ফিল্টারিং কৌশলগুলি ব্যবহার করতে পারেন তবে findউদাহরণস্বরূপ পরিবর্তনের তারিখ, অনুমতি,…

(তাই প্রায়ই সুগঠিত ফাইলের নাম অধিকৃত হয় হিসাবে, অন্যথায় আপনি ব্যবহার নাল বিভাজক যা অর্থ করতে পারেন যেমন বাইট প্রয়োজন -print0জন্য findএবং --nullজন্য tarযদি সমর্থিত।)

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