ইতিমধ্যে প্রচুর সংখ্যক ফাইল ট্র্যাক করে বিদ্যমান সংগ্রহস্থলে .gitignore প্রয়োগ করুন


314

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

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

এটি ব্যবহার করার পরামর্শ দেওয়া হয়েছিল: git rm --cachedএবং ম্যানুয়ালি সেগুলি আন-ট্র্যাক করুন তবে তাদের মাধ্যমে আমি একে একে যেতে চিরতরে নিয়ে যাব take

আমি সংগ্রহস্থলটি মুছে ফেলা এবং এটি পুনরায় তৈরি করার কথা ভেবেছিলাম কিন্তু এবার .gitignore ফাইল উপস্থিত থাকায় এটি করার আরও ভাল উপায় থাকতে হবে।


1
আপনি যদি বিকল্প হিসাবে git rm --cachedডিরেক্টরিগুলি সম্পূর্ণরূপে করতে পারেন -rতবে তা সহায়ক
নাথান ওয়ালস



উত্তর:


870

এই উত্তরটি আমার সমস্যার সমাধান করেছে:

প্রথমত, সমস্ত মুলতুবি পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন।

তারপরে এই কমান্ডটি চালান:

git rm -r --cached .

এটি সূচী থেকে সমস্ত কিছু সরিয়ে ফেলে, তবে কেবল চালান:

git add .

এটি প্রতিশ্রুতিবদ্ধ:

git commit -m ".gitignore is now working"

9
নিখুঁত উত্তর ! git push originদূরবর্তী সংগ্রহস্থলের পরিবর্তনগুলি প্রতিফলিত করতে দয়া করে একটি যুক্ত করুন ।
সংকেত বার্ডে

8
আমি এই উত্তরটি ব্যবহার শুরু করেছি ... এবং এটি আমার প্রকল্পের প্রায় সমস্ত কিছুই মুছে ফেলেছে! অবশ্যই আমি কিছু ভুল করছি। তবে আমি লোকদের এই পরামর্শটি আকস্মিকভাবে অনুসরণ না করার জন্য সতর্ক করতে চাই।
মার্ক ওলবার্ট

4
ফাইলগুলি মুছে ফেলা এবং পুনরায় যুক্ত করার পরে কি ইতিহাসের ক্ষতি হারাবে
অরণ মুলহোল্যান্ড

10
আমি ভাবছি যে এই .gitignore is now workingবার্তাটি ব্যবহার করে সেখানে কতজন কমিট রয়েছে । :)
ihavenoidea

1
এই পদ্ধতিটি আমার পক্ষে ভাল কাজ করেছে। আমি একটি গিটিগনোর ফাইল তৈরি করেছি, একটি সম্পূর্ণ ডিরেক্টরি উপেক্ষা করে, তারপর গিটিগনোর তৈরির এই পরিবর্তনটি প্রতিশ্রুতিবদ্ধ। আমি তারপরে এই তিনটি কমান্ডকে ঠিক যেমনটি বলেছিলাম ঠিক তেমনি অনুসরণ করেছি। এটি নিখুঁতভাবে কাজ করেছে, তবে আমার বলা উচিত যে আপনাকে উপরে বর্ণিত হিসাবে প্রথমে "সমস্ত মুলতুবি পরিবর্তন" করতে হবে।
এরিচ মেসনার

61
  1. একটি .gitignore ফাইল তৈরি করুন, এটি করতে আপনি কেবল খালি .txt ফাইল তৈরি করেন।

  2. তারপরে আপনাকে সিএমডি তে নিম্নলিখিত লাইনটি লিখতে হবে এর নামটি পরিবর্তন করতে হবে (আপনার সদ্য git.txtতৈরি করা ফাইলটির নামটি কোথায় ):

    rename git.txt .gitignore

  3. তারপরে আপনি ফাইলটি ওপেন করতে পারেন এবং আপনি যে সমস্ত অপ্রকাশিত ফাইলগুলি ভালের জন্য উপেক্ষা করতে চান তা লিখতে পারেন। উদাহরণস্বরূপ, আমার এইরকম দেখাচ্ছে:

``

OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#Project files
[Bb]uild/

#Subversion files
.svn

# Office Temp Files
~$*

গিটহাব দ্বারা দরকারী .gitignore ফাইলের একটি সম্পূর্ণ সংগ্রহ আছে

  1. আপনার এটি একবার হয়ে গেলে, আপনাকে এটি অন্য কোনও ফাইলের মতো আপনার গিট সংগ্রহস্থলটিতে যুক্ত করতে হবে, কেবল এটি সংগ্রহস্থলের মূলের মধ্যে থাকতে হবে।

  2. তারপরে আপনার টার্মিনালে আপনাকে নিম্নলিখিত লাইনটি লিখতে হবে:

    গিট কনফিগারেশন - গ্লোবাল কোর.এক্লাইডেসফিল ​​ile / .gitignore_global bal

অফিসিয়াল ডক থেকে:

আপনি একটি গ্লোবাল .gitignore ফাইলও তৈরি করতে পারেন যা আপনার কম্পিউটারে প্রতিটি গিট রিপোজিটরিতে ফাইল উপেক্ষা করার নিয়মের একটি তালিকা। উদাহরণস্বরূপ, আপনি ফাইলটি ~ / .gitignore_global এ তৈরি করতে এবং এতে কিছু বিধি যুক্ত করতে পারেন।

ওপেন টার্মিনাল। আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান: গিট কনফিগারেশন - গ্লোবাল কোর.এক্সক্লুডসফিল ~ / .gitignore_global

যদি রেসপোসিটোরিটি ইতিমধ্যে বিদ্যমান থাকে তবে আপনাকে এই আদেশগুলি চালাতে হবে:

git rm -r --cached .
git add .
git commit -m ".gitignore is now working"

যদি দ্বিতীয় পদক্ষেপটি কাজ না করে তবে আপনি যে ফাইলগুলি যুক্ত করতে চান তার গর্ত রুটটি লিখতে হবে।


4
@ ক্যারেন_উইজনিয়া "গিট কনফিগারেশন ... ওপি তা করতে চায়নি।
আইভান 7707

আমি আশা করি আমি একাধিকবার এটি পছন্দ করতে পারি, আমি ক্রমাগত এই প্রশ্নটি এই অনুস্মারকটির জন্য ফিরে আসি।
অ্যান্টনি

1
এটি "mit git.txt .gitignore" এর পরিবর্তে "git.txt। Gitignore" এর পরিবর্তে হওয়া উচিত।
আহমেদ এফ

30

এখানে নির্দিষ্ট হিসাবে আপনি সূচকটি আপডেট করতে পারেন:

git update-index --assume-unchanged /path/to/file

এটি করে, ফাইলগুলিতে git statusবা প্রদর্শিত হবে না git diff

ফাইলগুলি আবার ট্র্যাক করা শুরু করতে আপনি চালাতে পারেন:

git update-index --no-assume-unchanged /path/to/file

5
এটি আরও ভাল উত্তর - এটি কেবলমাত্র একক ফাইল, যে ফাইলটি আপনি সংগ্রহস্থল দ্বারা ট্র্যাক করতে চান না তার উপর দৃষ্টি নিবদ্ধ করা হয়। সর্বাধিক চিহ্নিত উত্তরটিও কাজ করবে তবে গিট দ্বারা ট্র্যাকিং থেকে কোনও ফাইলকে উপেক্ষা করার চেয়ে এটি আরও অনেক কিছু করে।
ক্রিস মেজকা

1
এইটা ভালো. কিন্তু আমরা যদি টানবো? কোনও মার্জ কোন্দল আছে?
প্রমোদ

@ প্রমোদ, দুর্দান্ত প্রশ্ন। আমি সত্যিই নিশ্চিত নই। একটি স্ট্রিপ ডাউন টেস্ট সংগ্রহস্থলটিতে চেষ্টা করে দেখুন?
প্যাট্রিক জেমস ম্যাকডোগল

14

আপনি যদি .gitignoreখুব দেরিতে যোগ করেন তবে গিট ইতিমধ্যে কমিট হওয়া ফাইলগুলি নির্বিশেষে ট্র্যাক করতে থাকবে। এটি ঠিক করতে, আপনি সবসময় অযাচিত ফাইলগুলির সমস্ত ক্যাশেড দৃষ্টান্তগুলি সরাতে পারেন।

প্রথমে আপনি আসলে কোন ফাইলগুলি ট্র্যাক করছেন তা যাচাই করতে আপনি চালাতে পারেন:

git ls-tree --name-only --full-tree -r HEAD

ধরা যাক যে আপনি যেমন একটি ডিরেক্টরিতে অযাচিত ফাইলগুলি পেয়েছেন cache/, আপনার ফাইলগুলির পরিবর্তে ডিরেক্টরিটি লক্ষ্য করা নিরাপদ।

এর পরিবর্তে:

git rm -r --cached .

অযাচিত ফাইল বা ডিরেক্টরিকে লক্ষ্য করা নিরাপদ:

git rm -r --cached cache/

তারপরে সমস্ত পরিবর্তন যুক্ত করতে এগিয়ে যান,

git add .

এবং প্রতিশ্রুতিবদ্ধ ...

git commit -m ".gitignore is now working"

তথ্যসূত্র: https://amyetheredge.com/code/13.html


আপনি যদি পুরো সংগ্রহস্থলটিই না কেবল কয়েকটি ফাইল মুছতে চান তবে এটি সেরা এবং পরিষ্কার উত্তর। আমি আমার থাম্বস আপ আপনি।
অপুইগ

2

এখানে অন্য যে কোনও ফাইলকে বাদ দেওয়া প্যাটার্নগুলির সেট অনুসারে উপেক্ষা করা হবে এমন কোনও ফাইলকে "আনড্র্যাক" করার একটি উপায় এখানে রয়েছে:

(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --

এটি আপনার কার্যক্ষম ডিরেক্টরিতে ফাইলগুলি ফেলে দেয় তবে সেগুলি সূচক থেকে সরিয়ে দেয়।

এখানে ব্যবহৃত কৌশলটি হ'ল এলএস-ফাইলগুলিকে একটি অস্তিত্বের সূচক ফাইল সরবরাহ করা যাতে এটি মনে করে যে কোনও ট্র্যাক করা ফাইল নেই। উপরের শেল কোডে সমস্ত ফাইলের জন্য জিজ্ঞাসা করা হয়েছে যা সূচক খালি থাকলে তা উপেক্ষা করা হবে এবং তারপরে গিট আরএম দিয়ে প্রকৃত সূচি থেকে অপসারণ করা হবে।

ফাইলগুলি "ট্র্যাক না করা" হয়ে যাওয়ার পরে, গুরুত্বপূর্ণ কিছু মুছে ফেলা হয়নি তা যাচাই করতে গিট স্ট্যাটাসটি ব্যবহার করুন (যদি তা আপনার বর্জনিত ধরণগুলি সামঞ্জস্য করে এবং মুছে ফেলা ইনডেক্স পুনরুদ্ধারের জন্য গিট রিসেট - পাথ ব্যবহার করুন)। তারপরে একটি নতুন প্রতিশ্রুতিবদ্ধ করুন যা "ক্রুড" ছাড়বে।

"ক্রুড" এখনও কোনও পুরানো চুক্তিতে থাকবে। আপনি যদি সত্যিই একটি পরিষ্কার ইতিহাসের প্রয়োজন হয় তবে পুরানো কমিটগুলির পরিষ্কার সংস্করণগুলি তৈরি করতে আপনি গিট ফিল্টার-শাখা ব্যবহার করতে পারেন (গিটার ফিল্টার-শাখা ব্যবহার করে "ইতিহাস পুনর্লিখন" করবে) সুতরাং আপনার যদি কোনও সহযোগী আছে যা এটিকে হালকাভাবে গ্রহণ করা উচিত নয় "ক্রুড" প্রথম প্রবর্তনের পরে আপনার কোনও historicalতিহাসিক কমিট)।


শক্ত সমাধানের মতো শোনায় :) আমি অনুমান করি যে এটি লিনাক্স শেলের জন্যই? দুর্ভাগ্যক্রমে আমি একজন উইন 7 ব্যবহারকারী। উইন্ডোতে কোনও উপায়ে আমি এটি করতে পারি?
তোহিদ

0

মঞ্চ অঞ্চল থেকে ফাইলগুলি সরান

git reset HEAD .

সমস্ত পরিবর্তন যুক্ত করুন

git add .

এটি প্রতিশ্রুতিবদ্ধ:

git commit -m ".gitignore is now working"

-1

আমি মনে করি এটি একটি বিদ্যমান সংগ্রহস্থলটিতে .gitignore ফাইল যুক্ত করার একটি সহজ উপায় ।

পূর্বশর্ত :

আপনার গিথব অ্যাকাউন্টটি অ্যাক্সেস করতে আপনার ব্রাউজার দরকার।

ধাপ

  1. আপনার প্রয়োজনীয় (বিদ্যমান) প্রকল্পে একটি নতুন ফাইল তৈরি করুন এবং এটি .gitignore নাম দিন । আপনি ফাইলটি .gitignore হিসাবে নাম দেওয়ার সাথে সাথেই .gitignore টেম্পলেটগুলির জন্য পরামর্শমূলক প্রম্পট পাবেন । হয় এই টেমপ্লেটগুলি ব্যবহার করুন বা আপনার gitignore ফাইলের সামগ্রী তৈরি করতে gitignore.io ব্যবহার করুন।
  2. পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।
  3. এখন এই সংগ্রহস্থলটি ক্লোন করুন।

আনন্দ কর!


-3

git clean
এই দৌড়তে সহায়তা পান ব্যবহার করুন

git clean -h

প্রথমে কী ঘটবে তা যদি আপনি দেখতে চান তবে একটি শুকনো রানের জন্য -n সুইচটি পাস করার বিষয়টি নিশ্চিত করুন:

git clean -xn

গিটার্নার্ড জঞ্জাল অপসারণ করতে

git clean -xdf

সাবধানতা: আপনি স্থানীয় কনফিগারেশন ফাইলগুলিকে উপেক্ষা করতে পারেন যেমন ডাটাবেস.আইএমএল যা সরিয়ে ফেলা হবে। আপনার নিজের ঝুঁকিতে ব্যবহার করুন।

তারপর

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