"গিট অ্যাড-এ" এবং "গিট অ্যাড" এর মধ্যে পার্থক্য।


2916

কমান্ডটি git add [--all|-A]অভিন্ন বলে মনে হচ্ছে git add .। এটা কি সঠিক? যদি তা না হয় তবে তারা কীভাবে আলাদা হবে?

উত্তর:


4239

এই উত্তরটি কেবল গিট সংস্করণ 1.x এ প্রযোজ্য । গিট সংস্করণ ২.x এর জন্য অন্যান্য উত্তর দেখুন।


সারসংক্ষেপ:

  • git add -Aসমস্ত পরিবর্তন পর্যায়

  • git add .মোছা ছাড়াই নতুন ফাইল এবং পরিবর্তনগুলি পর্যায়ায়িত করে

  • git add -uপর্যায়ে পরিবর্তন এবং মুছে ফেলা, নতুন ফাইল ছাড়াই


বিস্তারিত:

git add -Aসমতূল্য git add .; git add -u

গুরুত্বপূর্ণ বিষয়টি git add .হ'ল এটি কার্যকরী গাছের দিকে নজর দেয় এবং মস্তিত পরিবর্তনের সাথে সমস্ত পরিবর্তন করে যদি সেগুলি পরিবর্তিত হয় বা নতুন হয় এবং উপেক্ষা করা হয় না, এটি কোনও 'আরএম' ক্রিয়া করে না।

git add -uইতিমধ্যে ট্র্যাক করা সমস্ত ফাইল দেখে এবং সেই ফাইলগুলিতে পরিবর্তনগুলি পর্যায়ক্রমে করা হয় যদি সেগুলি আলাদা হয় বা সেগুলি সরানো হয়। এটি কোনও নতুন ফাইল যুক্ত করে না, এটি কেবল ইতিমধ্যে ট্র্যাক করা ফাইলগুলিতে পরিবর্তন শুরু করে।

git add -A এটি দুটিই করার একটি সহজ শর্টকাট।

আপনি এই (নোট Git সংস্করণটি জন্য আপনার আউটপুট 2.x ওই জাতীয় কিছু দিয়ে পার্থক্য পরীক্ষা করতে পারেন git add . git status হবে আলাদা হতে):

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

41
এর মধ্যে পার্থক্য কেমন git add *?
জেরেদ

3
git add -A -pএকজনের প্রত্যাশার মতো খুব খারাপ কাজ করে না (চিহ্নবিহীন ফাইলগুলি সম্পর্কে ইন্টারেক্টিভভাবে জিজ্ঞাসা করুন)
এরিক

2
উত্তর আপডেট করুন। এটি হওয়া উচিত: git add -A :/বাgit add -A .
গ্যাব্রিয়েল লালামাস

5
তথ্যের জন্য, গিটের আরও নতুন সংস্করণগুলিতে পরের প্যারামিটারটি একটি পাথ git add -uহয়ে উঠেছে git add -u :/, আপনাকে কিছু ডিরেক্টরি ডিরেক্টরিতে অনুমতি দেয়, :/পুরো গাছটি পরিচালনা করে।
ব্রিজি

15
@ চারলেস বেইলি, গিট সত্যিই অকারণে কোনও কারণকে জটিল করে তুলতে পছন্দ করে। এমন কোনও বাস্তব ব্যবহারের কেস রয়েছে যার মাধ্যমে কারও কাছে বিশেষভাবে প্রয়োজন হবে git add -uবা এমনটি করার মাধ্যমে git add .যে কোনও সিঙ্কের সমস্যা নেই তা নিশ্চিত করার জন্য অতিরিক্ত মানসিক করের জন্য অ্যাকাউন্টিং করার পরেও তার জীবনটি আরও সহজ করে তোলে? কেন আমি ভাবছি গীত না furthur বিভক্ত করে add -uদুটি পৃথক কমান্ড মধ্যে add -u1এবং add-u2ফাইলের জন্য যেখানে এক কাজ ফাইলের জন্য সংখ্যাসমূহ দিয়ে শুরু এবং অন্যান্য অ সংখ্যাসমূহ দিয়ে শুরু
Pacerier

946

দ্রুত বোঝার জন্য এখানে একটি টেবিল রয়েছে:

গিট সংস্করণ 1.x :

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

গিট সংস্করণ 2.x :

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

দীর্ঘ-ফর্ম পতাকা:

  • git add -A সমতুল্য git add --all
  • git add -u সমতুল্য git add --update

আরও পড়া:


1
টেবিলের জন্য ধন্যবাদ। কেবলমাত্র সংশোধিত ফাইল যুক্ত করার উপায় আছে? কোনও নতুন ফাইল বা মোছা ফাইল নেই
গোকুল এনকে

3
@ গোকুল: এই পোস্ট অনুসারে , আপনি git diff-files -z --diff-filter=M --name-only | xargs -0 git addকেবলমাত্র পরিবর্তিত ফাইল যুক্ত করতে পারেন তবে নতুন ফাইল বা মুছে ফেলার জন্য নয়।
ভিল

93
এটি পুরোপুরি সত্য নয়, কারণ git add .কেবল বর্তমান পথে রয়েছে এমন নতুন ফাইল যুক্ত adds অর্থাত যদি আপনি একটি নতুন ডিরেক্টরি আছে ../foo, git add -Aএটা মঞ্চ করবে git add .না।
মিলো উইলোন্ডেক

2
সুতরাং, git add .এর সমতুল্যgit add -A .git add "*"
23-21

আমি এখনও গিট অ্যাড "*" সম্পর্কে বিভ্রান্ত করছি, আপনি কি আরও কিছুটা ব্যাখ্যা করতে পারেন?
এইচএস উমর ফারুক

176

গিট ২.০git add -Agit add .git add -A . সহ ডিফল্ট: সমান

git add <path>git add -A <path>এখন " " এর মতোই , সুতরাং " git add dir/" ডিরেক্টরি থেকে আপনার সরানো পথগুলি লক্ষ্য করে এবং অপসারণটি রেকর্ড করে।
গীটের পুরানো সংস্করণগুলিতে, git add <path>অপসারণগুলি " " উপেক্ষা করুন।

আপনি যদি সত্যিই চান git add --ignore-removal <path>তবে কেবল যুক্ত বা পরিবর্তিত পাথগুলিতে যোগ করতে " " বলতে <path>পারেন।

git add -Aমত git add :/( শীর্ষ গিট রেপো ফোল্ডার থেকে সবকিছু যোগ করুন )।
নোট করুন যে গিট 2.7 (নভেম্বর 2015) আপনাকে " :" নামের একটি ফোল্ডার যুক্ত করতে দেবে !
দেখুন 29abb33 কমিট (25 অক্টোবর 2015) দ্বারা junio সি Hamano ( gitster)


নোট করুন যে গিট 2.0 (কিউ 1 বা কিউ 2 2014) শুরু করার সময় git add .(কাজের গাছের মধ্যে বর্তমান পথ ) সম্পর্কে কথা বলার সময় আপনাকে অবশ্যই .অন্যান্য git addকমান্ডগুলিতে ' ' ব্যবহার করতে হবে ।

এর মানে:

" git add -A ." সমান " git add .; git add -u ."

(এর জন্য অতিরিক্ত ' .' নোট করুন git add -Aএবং git add -u)

কারণ git add -Aবা git add -uকেবল চলমান পথে নয়, পুরো কার্যক্ষম গাছের উপর (কেবল গিট 2.0 শুরু করা) পরিচালনা করবে ।

এই কমান্ডগুলি " git commit -a" এবং অন্যান্য কমান্ডের সাথে সামঞ্জস্যতার জন্য গিট 2.0 তে পুরো গাছটিতে কাজ করবে । " git add -u" " " " " যেমন " " আচরণ করার কোনও ব্যবস্থা থাকবে না git add -u ., তবে " git add -u" (প্যাথস্পেক ব্যতীত) " " যারা " " (প্যাথস্পেক ব্যতীত) ব্যবহার করা হয় তাদের পক্ষে কেবলমাত্র সাবডাইরেক্টরিতে পাথের জন্য সূচি আপডেট করার জন্য তাদের আঙ্গুলগুলি স্পষ্টভাবে বলতে প্রশিক্ষণ শুরু করা গুরুত্বপূর্ণ " git add -u ."যখন গিট ২.০ আসার আগে তারা এটিকে বোঝায়।

এই কমান্ডগুলি যখন কোনও প্যাথস্পেক ছাড়াই চালানো হয় এবং যখন আপনার বর্তমান ডিরেক্টরির বাইরে স্থানীয় পরিবর্তন হয়, তখন একটি সতর্কতা জারি করা হয় কারণ গিট ২.০-তে আচরণ যেমন একটি পরিস্থিতিতে আজকের সংস্করণ থেকে আলাদা হবে।


3
পছন্দ করুন SO এর আন্তর্জাতিক সম্প্রদায়কে উদ্দেশ্য হিসাবে কাজ করে দেখে আনন্দিত। রেফারেন্সের জন্য: রু।
স্ট্যাকওভারফ্লো.

@ ভনসি, নিস, গিট লোকেরা তাদের আপডেটটি "বিষয়গুলিকে আরও সামঞ্জস্যপূর্ণ" করবে তা বলার জন্য গালটি আসলে ছিল। তারা যা করেছে তা আরও বিভ্রান্তি এবং অসঙ্গতি সৃষ্টি করেছে। সেখানে 26 বর্ণমালার এবং তারা ছিল একটি পতাকা যে ইতিমধ্যেই ব্যবহার করা পুনরায় ব্যবহার করার জন্য।
পেসারিয়ার

136

থেকে চার্লস 'নির্দেশাবলী , আমার প্রস্তাবিত বোঝার পরীক্ষা নিম্নরূপ হবে পরে:

# For the next commit
$ git add .   # Add only files created/modified to the index and not those deleted
$ git add -u  # Add only files deleted/modified to the index and not those created
$ git add -A  # Do both operations at once, add to all files to the index

এই কমান্ডগুলি কী পরিস্থিতিতে প্রয়োগ করা যেতে পারে তা এই ব্লগ পোস্টটি বুঝতেও সহায়তা করতে পারে: আপনার গিট ওয়ার্কিং ডিরেক্টরি থেকে মুছে ফেলা ফাইলগুলি সরানো


6
এটি আর 2.0 তে সত্য নয়। যোগ করুন একই পথের জন্য যোগ করার সমান, গাছের অন্যান্য পাথগুলিতে নতুন ফাইলগুলি থাকলে কেবল পার্থক্য হ'ল
ক্লাদিউ ক্র্যাঙ্গা

41

গিট 2.0 ( 2014-05-28 ) এর সাথে জিনিসগুলি পরিবর্তন হয়েছে :

  • -A এখন ডিফল্ট
  • পুরানো আচরণের সাথে এখন উপলব্ধ --ignore-removal
  • git add -uএবং git add -Aকমান্ড লাইনের পাথ ছাড়াই একটি উপ-ডিরেক্টরিতে পুরো গাছটিতে কাজ করে।

সুতরাং গিট 2 এর জন্য উত্তরটি হ'ল:

  • git add .এবং git add -A .বর্তমান ডিরেক্টরিতে নতুন / সংশোধিত / মুছে ফেলা ফাইল যুক্ত করুন
  • git add --ignore-removal . বর্তমান ডিরেক্টরিতে নতুন / সংশোধিত ফাইল যুক্ত করুন
  • git add -u . বর্তমান ডিরেক্টরিতে পরিবর্তিত / মুছে ফেলা ফাইল যুক্ত করে
  • বিন্দু ছাড়াই, বর্তমান ডিরেক্টরি নির্বিশেষে প্রকল্পের সমস্ত ফাইল যুক্ত করুন।

4
আমি এটি সঠিক মনে করি না। গিট v2.10.windows.2 ব্যবহার করে 'গিট অ্যাড' রিটার্ন 'কিছুই নির্দিষ্ট করা হয়নি, কিছুই যুক্ত করা হয়নি'। 'গিট অ্যাড-এ' সমস্ত পরিবর্তিত ফাইল যুক্ত করে। যা প্রস্তাব দেয় '-A' ডিফল্ট নয়।
নিউট্রিনো

34

আরও একটি পাতনযুক্ত দ্রুত উত্তর:

নীচে উভয় ( গিট অ্যাড - সমস্ত হিসাবে একই )

git add -A

পর্যায়ক্রমে নতুন + পরিবর্তিত ফাইল

git add .

পর্যায়গুলি + মুছে ফেলা ফাইলগুলি সংশোধন করা হয়েছে

git add -u

5
হ্যালো, আপনি যদি কেবলমাত্র পরিবর্তিত ফাইলগুলি স্টেজ করতে চান? আপনি এটা কিভাবে করবেন?
TheGrapeBeEnd मे

2
হ্যালো, ভাল ভাল প্রশ্ন। আমি যতদূর জানি এর পক্ষে এর জন্য একটি সহজ পতাকা নেই .. git diff-file -z --diff-ફિલ્ટર = এম - নামমাত্র | xargs -0 গিট যোগ করুন -> স্ট্যাকওভারফ্লো
.

2
আসলে এটি git add :/+git add -u :/
নিক ভলিনকিন

27

ইন গীত 2.x :

  • আপনি যদি সরাসরি ডিরেক্টরি ডিরেক্টরিতে অবস্থিত থাকেন তবে git add -Aএবং git add .পার্থক্য ছাড়াই কাজ করুন।

  • তোমাদের কেউ সাব হয়ে থাক কাজ ডিরেক্টরি , git add -Aসমগ্র থেকে সব ফাইল যোগ হবে পরিশ্রমী ডিরেক্টরি , এবং git add .আপনার থেকে ফাইল যোগ হবে বর্তমান ডিরেক্টরী

এবং যে সব.


12

আমি আশা করি এটি আরও কিছুটা স্বচ্ছতা যোগ করতে পারে।

!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)

সীমাবদ্ধতা -U বা -A বা শূন্য হতে পারে।

পাথস্পেক কোনও ফাইলপথ বা বিন্দু হতে পারে '' বর্তমান ডিরেক্টরি নির্দেশ করতে।

গিট কীভাবে 'যোগ' করে সে সম্পর্কে গুরুত্বপূর্ণ পটভূমি জ্ঞান:

  • অদৃশ্য ফাইলগুলি, যেগুলি একটি বিন্দুর সাথে পূর্বনির্ধারিত, (ডটফাইলস) কখনই গিট দ্বারা স্বয়ংক্রিয়ভাবে স্বীকৃত হয় না। এগুলি কখনও 'চিহ্নবিহীন' হিসাবে তালিকাভুক্ত হয় না।
  • খালি ফোল্ডারগুলি কখনও গিট দ্বারা যুক্ত হয় না। এগুলি কখনও 'চিহ্নবিহীন' হিসাবে তালিকাভুক্ত হয় না। (ট্র্যাক করা ফাইলগুলিতে একটি ফাঁকা ফাইল, সম্ভবত অদৃশ্যরূপে যুক্ত করা একটি কার্যপ্রণালী)
  • গিটের স্থিতি সাবফোল্ডার সম্পর্কিত তথ্য প্রদর্শন করবে না, অর্থাৎ আনট্র্যাকড ফাইলগুলি, যদি না সেই সাবফোল্ডারে অন্তত একটি ফাইল ট্র্যাক না করা হয়। এই সময়ের আগে, গিট পুরো ফোল্ডারটিকে সুযোগের বাইরে বিবেচনা করে, একটি লা 'খালি'। এটি ট্র্যাকড আইটেমগুলির ফাঁকা।
  • একটি ফাইলস্পেক = 'উল্লেখ করা হচ্ছে।' (ডট), বা বর্তমান ডিরেক্টরিটি পুনরায় উল্লেখযোগ্য না হলে পুনরাবৃত্ত হয় না -A। বিন্দুটি বর্তমান ডিরেক্টরিকে কঠোরভাবে উল্লেখ করে - এটি উপরে এবং নীচের দিকের পথগুলি বাদ দেয়।

এখন, সেই জ্ঞানটি দেওয়া হলে আমরা উপরের উত্তরগুলি প্রয়োগ করতে পারি।

সীমাবদ্ধতা নীচে হয়।

  • -u= --update= ট্র্যাক করা ফাইলগুলিতে সাবসেট => অ্যাড = না; পরিবর্তন = হ্যাঁ; মুছুন = হ্যাঁ => যদি আইটেমটি ট্র্যাক করা হয়।
  • -A= --all((এরূপ কোনও নয় -a, যা সিনট্যাক্স ত্রুটি দেয়) = ২.০ এর আগে গিট না থাকলে সমস্ত চিহ্নবিহীন / ট্র্যাক করা ফাইলের সুপারসেট, যার মধ্যে যদি ডট ফাইলস্পেক দেওয়া থাকে তবে কেবলমাত্র সেই নির্দিষ্ট ফোল্ডার হিসাবে বিবেচনা করা হবে। => যদি আইটেমটি স্বীকৃত হয় git add -Aতবে এটি খুঁজে পেয়ে এটি যুক্ত করবে।

পাথস্পেকটি নিম্নরূপ।

  • ২.০ এর আগে গিটে, দুটি সীমাবদ্ধতার জন্য (আপডেট এবং সমস্ত), নতুন ডিফল্ট হ'ল বর্তমান পাথের পরিবর্তে (পুরো গিট 1.9 বা তার আগের) পরিবর্তে পুরো কার্যক্ষম গাছটিতে কাজ করা,
  • তবে, ভি ২.০-তে, অপারেশনটি বর্তমান পথে সীমাবদ্ধ করা যেতে পারে: কেবল স্পষ্টভাবে ডট প্রত্যয় যুক্ত করুন (এটি গিট ১.৯ বা তার আগের ক্ষেত্রেও কার্যকর);

git add -A .

git add -u .

উপসংহারে, আমার নীতিটি হ'ল:

  1. যে কোনও হুঁশ / ফাইল যুক্ত হবে তা নিশ্চিত করুন git status
  2. অদৃশ্য ফাইল / ফোল্ডারগুলির কারণে যদি কোনও আইটেম অনুপস্থিত থাকে তবে সেগুলি পৃথকভাবে যুক্ত করুন।
  3. একটি ভাল .gitignoreফাইল আছে যাতে স্বাভাবিকভাবে কেবল আগ্রহের ফাইলগুলি অচিহ্নযুক্ত এবং / অথবা অপ্রজনিত।
  4. সংগ্রহস্থলের শীর্ষ স্তর থেকে সমস্ত আইটেম যুক্ত করতে "গিট অ্যাড-এ" এটি গিতের সমস্ত সংস্করণে কাজ করে।
  5. চাইলে সূচি থেকে যে কোনও পছন্দসই আইটেম সরিয়ে ফেলুন।
  6. যদি কোনও বড় ত্রুটি থাকে তবে সম্পূর্ণ সূচি সাফ করতে 'গিট রিসেট' করুন।

12

git add .সমান git add -A .কেবলমাত্র বর্তমান এবং শিশু ফোল্ডার থেকে সূচীতে ফাইল যুক্ত করে।

git add -A কার্যকারী গাছের সমস্ত ফোল্ডার থেকে সূচীতে ফাইল যুক্ত করা হয়।

PS: তথ্য গিট 2.0 (2014-05-28) এর সাথে সম্পর্কিত।


9

উভয়ই git add .এবং git add -Aগিট এর নতুন সংস্করণগুলিতে সমস্ত নতুন, সংশোধিত এবং মোছা ফাইল মঞ্চস্থ করবে।

পার্থক্যটি হ'ল git add -A"উচ্চতর, বর্তমান এবং উপ-ডিরেক্টরি" -এ ফাইলগুলি পর্যায়ক্রমে করে যা আপনার কাজের গিট সংগ্রহস্থলের অন্তর্ভুক্ত। কিন্তু এমনটি করা হলেও একটি git add .শুধু এটা নিম্নলিখিত বর্তমান ডিরেক্টরির মধ্যে ফাইল এবং সাবডিরেক্টরি পর্যায়ে ( না মিথ্যা বাহিরে ফাইল, অর্থাত, উচ্চতর ডিরেক্টরি)।

এখানে একটি উদাহরণ:

/my-repo
  .git/
  subfolder/
    nested-file.txt
  rootfile.txt

যদি আপনার সাম্প্রতিক কাজ করা হয় /my-repo, এবং আপনি কি rm rootfile.txt, তারপর cd subfolder, দ্বারা অনুসরণ git add ., তাহলে এটি হবে না মুছে ফেলা ফাইল দ্বিতীয় পর্যায়ে। তবে git add -Aআপনি যেখানেই কমান্ডটি সম্পাদন করেছেন তা নিশ্চিত না করেই এই পরিবর্তনটি পর্যায়ক্রমে আসবে।


3

-Aবিকল্প, যোগ পরিবর্তন, এবং কাজ গাছ মেলে সূচক এন্ট্রি সরিয়ে ফেলা হয়।

গিট 2 এ -Aবিকল্পটি এখন ডিফল্ট।

গিট ডকুমেন্টেশন অনুসারে. আপনি যে ডিরেক্টরিটিতে রয়েছেন সেখানে আপডেটের সুযোগ সীমাবদ্ধ করে এমন একটি যুক্ত করা হয়

<pathspec>-এ বিকল্পটি ব্যবহার করার সময় যদি কোনও দেওয়া না হয় তবে পুরো কার্যক্ষম গাছের সমস্ত ফাইল আপডেট হয়ে যায় (বর্তমান ডিরেক্টরি এবং এর উপ-ডিরেক্টরিতে আপডেট সীমাবদ্ধ করতে ব্যবহৃত গিটের পুরানো সংস্করণ)।

আমি যুক্ত করব একটি জিনিস হ'ল যদি --interactiveবা -pমোড ব্যবহার করা হয় তবে git addএমন আচরণ করবে যে আপডেট ( -u) পতাকা ব্যবহার হয়েছে এবং নতুন ফাইল যুক্ত না করা।

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