গিট অ্যাড * (তারকাচিহ্ন) বনাম গিট অ্যাড (আমল)


130

আমি গিটে নতুন এবং গিটে ফাইল যুক্ত করার বিষয়ে আমার একটি প্রশ্ন রয়েছে। আমি মধ্যে পার্থক্য সম্পর্কে একাধিক Stackoverflow প্রশ্ন পাওয়া যায় git add .এবং git add -a, git add --all, git add -A, ইত্যাদি কিন্তু আমি একটি জায়গা ব্যাখ্যা করেছেন যে কি খুঁজে পেতে অসমর্থ চলেছি git add *আছে। আমি এমনকি গিট অ্যাড ম্যান পৃষ্ঠাটি দেখেছি , তবে এটি কোনও লাভ হয়নি। আমি এটি জায়গায় ব্যবহার করছি git add .এবং আমার সহকর্মী আমাকে কেন জিজ্ঞাসা করলেন। আমার কোন উত্তর ছিল না। আমি সবসময় ব্যবহার করেছি git add *

হয় git add .এবং git add *একই? একজনের কি কেবল বর্তমান ডিরেক্টরি থেকে পরিবর্তিত ফাইল যুক্ত করা হয়, অন্যটি বর্তমান ডিরেক্টরি এবং উপ-ডিরেক্টরিগুলি (পুনরাবৃত্তভাবে) থেকে ফাইলগুলি যুক্ত করে?

সেখানে একটি মহান অন্যান্য স্ট্যাক প্রশ্নগুলির একটির শো পার্থক্য মধ্যে যে তালিকাভুক্ত চার্টটির git add -A git add .এবং git add -u, কিন্তু এটা নেই git add *

এখানে চিত্র বর্ণনা লিখুন

নোট: একটি ওয়াইল্ডকার্ড হিসাবে তারকাচিহ্নটি ব্যবহার করার অর্থ কী তা আমি বুঝেছি (প্রদত্ত এক্সটেনশন সহ সমস্ত ফাইল যুক্ত করুন)। উদাহরণস্বরূপ, git add *.htmlএকটি আছে যে সব ফাইল যোগ হবে .htmlএক্সটেনশন (কিন্তু উপেক্ষা করা .css, .jsইত্যাদি)।

সাহায্যের জন্য ধন্যবাদ!


1
সেই চার্টটি কোথা থেকে এসেছে? আমি কেবল git add .আবার চেষ্টা করেছি , এবং এটি একটি সরিয়ে ফেলা ফাইলের কোনও সমস্যা নেই, Xসেই সারিটির মত নয় ।
ডেভিড

@ ডেভিড এই চিত্রটি এই উত্তর থেকে এবং গিট পুরানো সংস্করণে প্রযোজ্য।
জেরি

4
পুরানো ছবি! গিট 2.x আলাদা: i.stack.imgur.com/KwOLu.jpg
হ্যানস স্নাইডারমায়ার

উত্তর:


132

add *যার অর্থ বিন্দু দিয়ে শুরু হওয়া ফাইল বাদে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল যুক্ত করুন। এটি আপনার শেল কার্যকারিতা এবং গিট কেবল কখনও ফাইলগুলির একটি তালিকা গ্রহণ করে।

add . আপনার শেলের কোনও বিশেষ অর্থ নেই, এবং এইভাবে গিট পুরো ডিরেক্টরিটি পুনরাবৃত্তভাবে যুক্ত করে, যা প্রায় একই রকম, তবে এমন ফাইলগুলিও অন্তর্ভুক্ত থাকে যার নামগুলি একটি বিন্দু দিয়ে শুরু হয়।


6
সুতরাং git add ..gitignore এবং ডট দিয়ে শুরু হওয়া অন্য যে কোনও কিছু যুক্ত করে সমস্ত ফাইল, ফোল্ডার এবং সাবফোল্ডার যুক্ত করে, বিন্দুতে শুরু হওয়া git add *ফাইলগুলি বাদ দিয়ে কোনও ফাইল, ফোল্ডার এবং সাবফোল্ডার যুক্ত হবে? এটা কি সঠিক?
টাইলার ইয়ংব্লুড

9
এটা আসলে সঠিক। এছাড়াও, git add *যদি তারা একটি উপ-ডিরেক্টরিতে থাকে তবে কোনও বিন্দু দিয়ে শুরু করা ফাইলগুলি যুক্ত করবে।
ডেনিস

4
git add ..gitignore কেও সম্মান করে, যেখানে git add *কোনও নন-ডট-ফাইল gitignore করা থাকলে ত্রুটি ছুঁড়ে দেবে। git add .তুলনায় অনেক ভাল ব্যবহার git add *
রসুয়াভ

2
লক্ষণীয় বিষয়: সিএমডি.এক্সইএইএস এর থেকে ডস / উইন্ডোজে গিটকে অনুরোধ করা হলে এটি গিট , শেল নয়, যা প্রসারিত করে *। এই ক্ষেত্রে গিট ডট-ফাইলগুলি সন্ধান করবে।
টোকর

2
@ থোর 84no: শিটটি *থেকে সুরক্ষিত রাখতে আপনি যদি উদ্ধৃতি দিয়ে থাকেন তবে গিট একটি লিনাক্স সিস্টেমেও ডট-ফাইলগুলি খুঁজে পাবে । এটি লুকানো বিটের বিষয় নয়, এটি কেবলমাত্র গিটের সংকলিত বিধিগুলির মধ্যে পৃথক।
টোরেক

30

*গিটের অংশ নয় - এটি শেল দ্বারা ব্যাখ্যা করা একটি ওয়াইল্ডকার্ড। *বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইলগুলিতে প্রসারিত হয় এবং কেবল তখনই গিটকে দেওয়া হয়, যা সবগুলিই add.বর্তমান ডিরেক্টরিটি নিজেই, এবং git addএটি তৈরি করা হলে এটি এবং এটির অধীনে থাকা সমস্ত ফাইল যুক্ত হবে।


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

5
*লুকানো ফাইলগুলি এড়িয়ে যায় (যেমন, যে ফাইলগুলির সাথে তাদের নাম শুরু হয় .)। যে কোনও ইভেন্টে, আপনি যদি নির্দিষ্ট ফাইল যুক্ত না করেন তবে আমি কেবল ব্যবহার করব git add -u(অথবা git add -Aআপনি যদি নতুন ফাইল তৈরি করছেন)।
মুরিনিক

3
যেহেতু আপনারা উভয়েই আমার প্রশ্নের উত্তর দিয়েছেন আমার কাকে ক্রেডিট দিতে হবে তা সিদ্ধান্ত নিতে সমস্যা হয়েছিল। আমি নীচে ডেনিসকে বেছে নিয়েছি কারণ তার চেয়ে আপনার চেয়ে কম প্রতিনিধি রয়েছে। সুতরাং আমি ভেবেছিলাম যে তাকে গ্রিন চেক দেওয়া তার চেয়ে বেশি উপকৃত হবে এটি আপনার উপকারের চেয়ে বেশি। আমি আশা করি যে এটি উপলব্ধি করে? তবে আমি উভয় ব্যাখ্যার সত্যই প্রশংসা করি। ধন্যবাদ!
টাইলার ইয়ংব্লুড

7

. শেলের মধ্যে ডট ব্যবহার করার অর্থ সাধারণত "বর্তমান ডিরেক্টরি"।

যখন আপনি *একটি শেলটিতে তারকাচিহ্ন ব্যবহার করেন তখন একটি বৈশিষ্ট্য file-globbingব্যবহৃত হয়। যেমন বাশ অন ফাংশন glob()ঠিক তাই করছে। গ্লোব ( man 7 glob) এর ম্যানপেজটি বলে:

বর্ণনা

Long ago, in UNIX V6, there was a program /etc/glob that would expand 
wildcard patterns.  Soon afterward this became a shell built-in.
These days there is also a library routine glob(3) that will perform this 
function for a user program.

ওয়াইল্ডকার্ড মিলছে

A string is a wildcard pattern  if it contains one of the characters '?', '*' or '['. 

Globbing

Globbing is the operation that expands a wildcard pattern 
into the list of pathnames matching the pattern.

এর অর্থ যখন আপনি কমান্ডলাইনে থাকা কোনও প্রোগ্রামের সাথে যুক্তিগুলি পাস করেন '?', '*'বা '[', প্রথমে গ্লোব্বিং ওয়াইল্ডকার্ড প্যাটার্নটিকে ফাইলের তালিকায় প্রসারিত করে এবং তারপরে প্রোগ্রামগুলিকেই একটি যুক্তি হিসাবে এই ফাইলগুলি দেয়।

এর মধ্যে অর্থের পার্থক্য 'git add .'এবং ডেনিস'git add *' স্পষ্টভাবে বর্ণনা করেছেন :

git addফাইলগুলির একটি তালিকা যুক্ত হওয়ার প্রত্যাশা করে। উপরের উদাহরণে শেলটি যথাক্রমে প্রসারিত হয় *বা .গিট অ্যাডকে পরামিতি হিসাবে ফলাফল দেয়। এখন পার্থক্যটি হ'ল গিটটি git add .বর্তমান ডিরেক্টরিতে প্রসারিত হবে যেখানে git add *ফাইল গ্লোব্বিং ট্রিগার করে এবং এমন ফাইল এবং ডিরেক্টরিগুলিতে বিন্দু দিয়ে শুরু হয় না এমন প্রসারিত হয়।


5

স্পষ্টতার জন্য, আমি উত্তরটি নীচে সারণিতে রেখেছি:

এখানে চিত্র বর্ণনা লিখুন

অতিরিক্ত নোট (@ রেকা 18 মন্তব্য দ্বারা অনুপ্রাণিত):

দ্রষ্টব্য 1. git add -A এবং git add -uঅতিরিক্ত পরামিতি ছাড়াই সম্পাদিত আদেশগুলি অতিরিক্ত পরিমার্জন (ফাইলের নামের জন্য সাব-ডাইরেক্টরি বা মাস্ক ইঙ্গিত) পুরো কার্যনির্বাহী ডিরেক্টরিতে কাজ করবে (এছাড়াও যদি আমরা ডিরেক্টরিটির কার্যনির্বাহী ডিরেক্টরিতে কমান্ডটি কার্যকর করি তবে)।

উল্লেখ্য 2. দ্য .এবং *হয় যথাক্রমে ডিরেক্টরির পাথ (বর্তমান ডিরেক্টরির) এবং ওয়াইল্ডকার্ড, যা কমান্ড পথ নির্মল। উদাহরণস্বরূপ, যদি কার্য নির্দেশিকাটির কোনও কোনও উপ-ডিরেক্টরিতে git add .বা git add *কমান্ডটি কার্যকর করা হয়, তবে তাদের ক্রিয়াটি কেবলমাত্র এই ডিরেক্টরিকে ব্যবহার করা হবে না পুরো কার্যনির্বাহী ডিরেক্টরিতে।

নোট 3. দ্য git add -Aএবং git add -uকমান্ড আরও একটি পথ যোগ করে অথবা ফাইলের জন্য মাস্ক, উদাহরণস্বরূপ, দ্বারা পরিশ্রুত করা যেতে পারে git add -A app/controllersবা git add -u app\styles\*


2
সুতরাং গিট ভি 2.x হিসাবে git add -Aএবং git add .অভিন্ন?
reka18

একটি খুব ভাল প্রশ্নের জন্য আপনাকে @ রেকা 18 ধন্যবাদ। এটি আমার উত্তরটি সম্পূর্ণ করতে আমাকে অনুপ্রাণিত করেছে ... আপনার প্রশ্নের উত্তর: আপনি যদি এটিকে ওয়ার্কিং ডিরেক্টরিতে কল করেন, না, তবে যদি একটি উপ-ডিরেক্টরিতে থাকে তবে হ্যাঁ ( git add -Aপুরো ওয়ার্কিং ডিরেক্টরি এবং git add .সর্বদা বর্তমান ডিরেক্টরিতে প্রযোজ্য )।
সিংহমাইলিকো

2
  • git add -A (- সমস্ত) সমস্ত কিছু যুক্ত করে, যাতে ডিস্কে থাকা আপনার ফোল্ডারে থাকা সমস্ত কিছু মঞ্চে প্রদর্শিত হয়

  • git add . সবকিছু স্টেজ করে তবে ডিস্ক থেকে মুছে ফেলা ফাইলগুলি সরিয়ে দেয় না

  • git add * সমস্ত কিছু স্টেজ করে তবে কোনও বিন্দু দিয়ে শুরু হওয়া ফাইলগুলি নয় এবং ডিস্ক থেকে মুছে ফেলা ফাইলগুলি সরিয়ে দেয় না

  • git add -u (--update) কেবলমাত্র ফাইলগুলি সংশোধন করা হয়, ডিস্ক থেকে মুছে ফেলা হওয়া ফাইলগুলি সরিয়ে দেয়, নতুন যুক্ত করে না

  • git add <file name 1> <file name 2> কেবলমাত্র নির্দিষ্ট ফাইল (গুলি) যুক্ত করে

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