“Git add -A” සහ “git add” අතර වෙනස.


2925

විධානය git add [--all|-A]සමාන බව පෙනේ git add .. මේක හරිද? එසේ නොවේ නම්, ඒවා වෙනස් වන්නේ කෙසේද?

Answers:


4252

මෙම පිළිතුර අදාළ වන්නේ Git අනුවාදය 1.x ට පමණි . Git අනුවාදය 2.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 හි නවතම අනුවාදයන්හි අවසාන පරාමිතිය මාර්ගයක් git add -uබවට පත්ව git add -u :/ඇති අතර, ඔබට -u සමහර නාමාවලි වලට ඉඩ :/දී මුළු ගසම හසුරුවයි.
බ්‍රයිසි

15
Har චාර්ල්ස් බේලි, හොඳ හේතුවක් නොමැතිව දේවල් සංකීර්ණ කිරීමට Git සැබවින්ම කැමතියි . යම් කෙනෙක් සැබෑ භාවිතය නඩුව කෙනෙකු විශේෂයෙන් අවශ්ය ද, මහජනතාවට git add -uහෝ git add .එය කිසිදු සමමුහුර්ත ගැටලු ඉන්නේ බව සහතික කිරීමට එකතු වන අමතර මානසික බදු සඳහා වූ ගිණුම්වල පසුව පවා පහසු ඔහුගේ ජීවිතය කරවන කිරීමෙන්? Git භේදය furthur නැත ඇයි මම කල්පනා add -uවෙනම විධාන දෙකකට add -u1හා add-u2-ඉලක්කම් නොවන සමඟ ආරම්භ ගොනු සඳහා ඉලක්කම් හා අනෙකුත් සමඟ ආරම්භ ගොනු සඳහා එමඟින් එක් ක්රියා
Pacerier

952

ඉක්මන් අවබෝධය සඳහා වගුවක් මෙන්න:

Git අනුවාදය 1.x :

රූප විස්තරය මෙහි ඇතුළත් කරන්න

Git අනුවාදය 2.x :

රූප විස්තරය මෙහි ඇතුළත් කරන්න

දිගු හැඩැති කොඩි:

  • git add -A සමාන වේ git add --all
  • git add -u සමාන වේ git add --update

වැඩිදුර කීයවීම:


1
මේසයට ස්තූතියි. නවීකරණය කරන ලද ගොනු පමණක් එකතු කිරීමට ක්‍රමයක් තිබේද? නව ලිපිගොනු හෝ මකා දැමූ ලිපිගොනු නොමැත
ගොකුල් එන්කේ

3
@Gokul: අනුව මෙම පශ්චාත් , ඔබ භාවිතා කළ හැකිය git diff-files -z --diff-filter=M --name-only | xargs -0 git addපමණක් වෙනස් ගොනු, නමුත් නව ගොනු හෝ සිදුවූ මකාදැමීම් එකතු කිරීමට.
විලේ

94
මෙය සම්පුර්ණයෙන්ම සත්‍ය නොවේ, මන්දයත් git add .වත්මන් මාවතේ ඇති නව ලිපිගොනු එක් කිරීම පමණි. එනම්, ඔබට නව නාමාවලියක් තිබේ නම් ../foo, git add -Aඑය වේදිකා ගත git add .කරනු ඇත, එසේ නොවේ.
මයිලෝ විලෝන්ඩෙක්

2
ඉතින්, git add .සමාන වේ git add -A ., එය සමාන වේgit add "*"
flow2k

Git add "*" ගැන මම තවමත් ව්‍යාකූල වී සිටිමි, කරුණාකර එය තව ටිකක් විස්තර කළ හැකිද?
එච්එස් උමර් ෆාරුක්

176

Git 2.0git add -Agit add .git add -A . සමඟ පෙරනිමිය: සමාන වේ .

git add <path>git add -A <path>දැන් " " හා සමාන වේ , එවිට git add dir/ඔබ ඩිරෙක්ටරියෙන් ඉවත් කළ මාර්ග " " සහ ඉවත් කිරීම සටහන් කරයි.
Git හි පැරණි අනුවාද වල, git add <path>ඉවත් කිරීම් නොසලකා හරින ලදි.

ඔබට සැබවින්ම අවශ්‍ය නම් git add --ignore-removal <path>එකතු කළ හෝ වෙනස් කළ මාර්ග පමණක් එක් කිරීමට ඔබට " " කිව හැකිය <path>.

git add -Aවැනි ය git add :/( ඉහළ git repo ෆෝල්ඩරයෙන් සියල්ල එක් කරන්න ).
Git 2.7 (නොවැ. 2015) ඔබට " :" නම් ෆෝල්ඩරයක් එක් කිරීමට ඉඩ දෙන බව සලකන්න ! ජූනියෝ සී හමානෝ විසින් රචිත 29abb33 (2015 ඔක්තෝබර් 25)
බලන්න (gitster ) .


කතා කරන විට git 2.0 (Q1 හෝ Q2 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(GIT 2.0 ක් පමණක් ආරම්භ) මත ක්රියාත්මක කිරීමට සමස්ත කම්කරු ගසක් මත මිස වර්තමාන මාවතේ පමණක් නොවේ.

එම විධානයන් " git commit -a" සහ අනෙකුත් විධානයන්ට අනුකූලව Git 2.0 හි ඇති මුළු ගසෙහිම ක්‍රියාත්මක වේ. " git add -u" ලෙස හැසිරීමට යාන්ත්‍රණයක් නොමැති git add -u .හෙයින්, " git add -u" (පාස්පෙක් නොමැතිව) වර්තමාන උප බහලුමේ ඇති මාර්ග සඳහා පමණක් දර්ශකය යාවත්කාලීන කිරීමට පුරුදු වී සිටින අයට පැහැදිලිවම පැවසීමට ඇඟිලි පුහුණු කිරීම ආරම්භ කිරීම වැදගත් වේ. git add -u .Git 2.0 පැමිණීමට පෙර ඔවුන් එය අදහස් කරන විට.

මෙම විධානයන් පාස්පෙක්ට් නොමැතිව ධාවනය වන විට සහ වත්මන් නාමාවලියෙන් පිටත දේශීය වෙනස්කම් ඇති විට අනතුරු ඇඟවීමක් නිකුත් කරනු ලැබේ , මන්ද එවැනි තත්වයක් තුළ Git 2.0 හි හැසිරීම වර්තමාන අනුවාදයට වඩා වෙනස් වනු ඇත.


3
IckNickVolynkin ඒක නියමයි! SO හි ජාත්‍යන්තර ප්‍රජාව අපේක්ෂිත පරිදි ක්‍රියා කිරීම ගැන සතුටුයි. යොමුව සඳහා: ru.stackoverflow.com/a/431840
VonC

OnVonC, හොඳයි, ඔවුන්ගේ යාවත්කාලීනය "දේවල් වඩාත් ස්ථාවර කරයි" යැයි කීමට Git පිරිසට ඇත්ත වශයෙන්ම කම්මුල තිබුණි. ඔවුන් කර ඇති දෙය වඩාත් ව්‍යාකූලතා හා නොගැලපීම් ඇති කරයි. 26 වර්ණමාලා ඔවුන් තියෙනවා ඇති දැනටමත් භාවිතා කර කරන බව ද ධජය නැවත භාවිත කිරීමට.
පැසීරියර්

137

සිට චාල්ස් උපදෙස් , මගේ යෝජනා අවබෝධය පරීක්ෂා කිරීමෙන් අනතුරුව පහත සඳහන් පරිදි වනු ඇත:

# 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

මෙම විධාන යෙදිය හැක්කේ කුමන තත්වයකද යන්න තේරුම් ගැනීමට මෙම බ්ලොග් සටහන ප්‍රයෝජනවත් විය හැකිය: ඔබගේ Git වැඩ කරන නාමාවලියෙන් මකාදැමුණු ගොනු ඉවත් කිරීම .


6
මෙය 2.0 හි තවදුරටත් සත්‍ය නොවේ. එකතු කරන්න. එකම මාර්ගයක් සඳහා -A එකතු කිරීමට සමාන වේ, එකම වෙනස වන්නේ ගසෙහි වෙනත් මාර්ගවල නව ලිපිගොනු තිබේ නම්
ක්ලෝඩියු ක්‍රියංගා

42

Git 2.0 ( 2014-05-28 ) සමඟ තත්වය වෙනස් විය :

  • -A දැන් පෙරනිමිය වේ
  • පැරණි හැසිරීම දැන් ලබා ගත හැකිය --ignore-removal.
  • git add -uහා git add -Aවිධාන රේඛාවේ මාර්ග තොරව උප බහලුම තුල සමස්ත ගස මත ක්රියාත්මක වේ.

එබැවින් Git 2 සඳහා පිළිතුර:

  • git add .හා git add -A .එකතු නව / වත්මන් බහාළුම වෙනස් වූ / මකා ගොනු
  • git add --ignore-removal . වත්මන් නාමාවලියෙහි නව / වෙනස් කළ ගොනු එක් කරයි
  • git add -u . වත්මන් නාමාවලියෙහි නවීකරණය කරන ලද / මකා දැමූ ගොනු එක් කරයි
  • තිත නොමැතිව, වත්මන් නාමාවලිය නොසලකා ව්‍යාපෘතියේ සියලුම ගොනු එක් කරන්න.

4
මෙය නිවැරදි යැයි මම නොසිතමි. Git v2.10.windows.2 භාවිතා කරමින් 'git add' return 'කිසිවක් නිශ්චිතව දක්වා නැත, කිසිවක් එකතු කර නැත'. 'git add -A' වෙනස් කළ සියලුම ගොනු එක් කරයි. එයින් ඇඟවෙන්නේ '-A' පෙරනිමිය නොවන බවයි.
නියුට්‍රිනෝ

34

වඩාත් ආසවනය කළ ඉක්මන් පිළිතුර:

පහත දෙකම ( git add --all ට සමාන වේ )

git add -A

නව + වෙනස් කළ ගොනු අදියර

git add .

අදියර වෙනස් කරන ලද + මකා දැමූ ගොනු

git add -u

5
හෙලෝ, ඔබට නවීකරණය කරන ලද ලිපිගොනු පමණක් වේදිකා ගත කිරීමට අවශ්‍ය නම් කුමක් කළ යුතුද? ඔබ එය කරන්නේ කෙසේද?
TheGrapeBeyond

2
හෙලෝ, හොඳ ප්‍රශ්නයක්. මා දන්නා තරමින් ඒ සඳහා පහසු ධජයක් නොමැත .. git diff-files -z --diff-filter = M --name-only | xargs -0 git add from -> stackoverflow.com/questions/14368093/…
කේ. කිලියන් ලින්ඩ්බර්ග්

2
ඇත්තෙන්ම එය git add :/+git add -u :/
නික් වොලින්කින්

27

දී Git 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 හෝ නිල් විය හැකිය.

පාත්ස්පෙක් යනු ගොනු මාර්ගයක් හෝ තිතක් විය හැකිය, '.' වත්මන් නාමාවලිය දැක්වීමට.

Git 'එකතු කරන ආකාරය' පිළිබඳ වැදගත් පසුබිම් දැනුම:

  • අදෘශ්‍යමාන ලිපිගොනු, තිතක් සමඟ උපසර්ගගත කර ඇති (dotfiles) කිසි විටෙකත් ස්වයංක්‍රීයව Git විසින් හඳුනා නොගනී. ඒවා කිසි විටෙකත් 'නොකැඩූ' ලෙස ලැයිස්තුගත කර නැත.
  • හිස් ෆෝල්ඩර කිසි විටෙකත් Git විසින් එකතු නොකරයි. ඒවා කිසි විටෙකත් 'නොකැඩූ' ලෙස ලැයිස්තුගත කර නැත. (මෙහි ප්‍රති ar ලයක් ලෙස ලුහුබැඳ ඇති ලිපිගොනු වලට හිස් ගොනුවක් නොපෙනෙන ලෙස එක් කිරීම.)
  • එම උප ෆෝල්ඩරයේ අවම වශයෙන් එක් ගොනුවක්වත් නිරීක්ෂණය නොකළහොත් Git තත්ත්වය උප ෆෝල්ඩරයේ තොරතුරු, එනම්, නොකැඩූ ගොනු පෙන්වන්නේ නැත. එවැනි කාලයකට පෙර, Git මුළු ෆෝල්ඩරයම විෂය පථයෙන් බැහැරව සලකයි. එය ලුහුබැඳ ඇති අයිතම වලින් හිස් ය.
  • Filepec = 'නියම කිරීම.' (dot), හෝ වත්මන් නාමාවලිය -Aද නිශ්චිතව දක්වා නොමැති නම් පුනරාවර්තන නොවේ . තිත යනු වත්මන් ඩිරෙක්ටරියට තදින්ම යොමු කරයි - එය ඉහළින් සහ පහළින් ඇති මාර්ග මඟ හැරේ.

දැන්, එම දැනුම අනුව, අපට ඉහත පිළිතුරු යෙදිය හැකිය.

සීමාවන් පහත පරිදි වේ.

  • -u= --update= ලුහුබැඳ ඇති ලිපිගොනු වලට උප කුලකය => එකතු කරන්න = නැත; වෙනස් කිරීම = ඔව්; මකන්න = ඔව්. => අයිතමය නිරීක්ෂණය කර ඇත්නම් .
  • -A= --all(එවැනි කිසිවක් නැත -a, එය සින්ටැක්ස් දෝෂයක් ලබා දෙයි) = 2.0 ට පෙර Git හි හැර, සොයා නොගත් / ලුහුබැඳ ඇති සියලුම ලිපිගොනු වල සුපර්සෙට් එක, තිත් ගොනු විශේෂයක් ලබා දෙන්නේ නම්, එම විශේෂිත ෆෝල්ඩරය පමණක් සලකනු ලැබේ. => නම් අයිතමය පිළිගත්, git add -Aඑය සොයා එය එකතු වනු ඇත.

පථය පහත පරිදි වේ.

  • 2.0 ට පෙර Git හි, සීමාවන් දෙක සඳහා (යාවත්කාලීන කිරීම සහ සියල්ල), නව පෙරනිමිය වන්නේ වත්මන් මාර්ගය වෙනුවට (Git 1.9 හෝ ඊට පෙර) සම්පූර්ණ වැඩ කරන ගස මත ක්‍රියාත්මක වීමයි,
  • කෙසේ වෙතත්, v2.0 හි, මෙහෙයුම වත්මන් මාර්ගයට සීමා කළ හැකිය: පැහැදිලි තිත් උපසර්ගය එක් කරන්න (එය Git 1.9 හෝ ඊට පෙර වලංගු වේ);

git add -A .

git add -u .

අවසාන වශයෙන්, මගේ ප්‍රතිපත්තිය:

  1. එකතු කළ යුතු ඕනෑම හන්ක් / ලිපිගොනු ගිණුම්ගත කර ඇති බවට සහතික වන්න git status.
  2. නොපෙනෙන ලිපිගොනු / ෆෝල්ඩර හේතුවෙන් කිසියම් අයිතමයක් අස්ථානගත වී ඇත්නම් ඒවා වෙන වෙනම එක් කරන්න.
  3. හොඳ .gitignoreලිපිගොනුවක් තබා ගන්න එවිට සාමාන්‍යයෙන් උනන්දුවක් දක්වන ලිපිගොනු පමණක් හඳුනා නොගත් සහ / හෝ හඳුනා නොගනී.
  4. ගබඩාවේ ඉහළ මට්ටමේ සිට, සියලු අයිතම එකතු කිරීමට "git add -A". මෙය Git හි සියලුම සංස්කරණ වල ක්‍රියා කරයි.
  5. අවශ්‍ය නම් දර්ශකයෙන් අපේක්ෂිත අයිතම ඉවත් කරන්න.
  6. විශාල දෝෂයක් තිබේ නම්, දර්ශකය මුළුමනින්ම ඉවත් කිරීමට 'git reset' කරන්න.

12

git add .සමානාත්මතාවයට git add -A .ලිපිගොනු එකතු කරන්නේ වත්මන් සහ ළමා ෆෝල්ඩර වලින් පමණි.

git add -A වැඩ කරන ගසෙහි ඇති සියලුම ෆෝල්ඩර වලින් දර්ශකයට ගොනු එකතු කරයි.

PS: තොරතුරු Git 2.0 (2014-05-28) හා සම්බන්ධයි.


9

දෙකම git add .සහgit add -A නව, නවීකරණය කරන ලද සහ මකාදැමූ සියලුම ගොනු Git හි නවතම අනුවාද වල ස්ථානගත කරනු ඇත.

වෙනස වන්නේ git add -Aඔබේ වැඩ කරන Git ගබඩාවට අයත් "ඉහළ, වත්මන් සහ උප බහලුම්" වල ගොනු ස්ථානගත කිරීමයි. නමුත් git add .වර්තමාන ඩිරෙක්ටරියේ සහ උප බහලුම්වල ඇති එකම අදියර ගොනු කිරීම ( එසේ නොවේ පිටත ඇති ගොනු , එනම් ඉහළ නාමාවලි).

මෙන්න උදාහරණයක්:

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

ඔබේ වත්මන් කම්කරු බහලුම නම් /my-repo, ඔබ කරන්නේ rm rootfile.txt, එසේ නම් cd subfolder, අනුගමනය git add ., එය වනු ඇත නොවන මකා දමන ගොනුව වේදිකාගත. git add -Aඔබ කොතැනින් ආ command ාවක් කළත් එසේ කිරීමෙන් මෙම වෙනස සිදුවනු ඇත.


3

එම -A විකල්පය නව්යන කරයි, සහ වැඩ ගසක් ගැලපෙන දර්ශකය සටහන් ඉවත් කරයි.

Git 2 හි -Aවිකල්පය දැන් පෙරනිමිය වේ.

Git ප්‍රලේඛනයට. අනුව ඔබ දැනට සිටින නාමාවලියට යාවත්කාලීන කිරීමේ විෂය පථය සීමා කරන a එකතු කළ විට

එසේ නොවේ නම් <pathspec>-A විකල්පයක් භාවිතා කරන විට ලබා නොදුනහොත්, මුළු වැඩ කරන ගසෙහි ඇති සියලුම ලිපිගොනු යාවත්කාලීන වේ (වත්මන් ඩිරෙක්ටරියට සහ එහි උප බහලුම් වලට යාවත්කාලීන කිරීම සීමා කිරීමට Git හි පැරණි අනුවාද භාවිතා වේ).

මා එකතු කරන එක් දෙයක් නම්, --interactiveහෝ -pමාදිලිය භාවිතා git addකරන්නේ නම් යාවත්කාලීන ( -u) ධජය භාවිතා කළ ආකාරයට හැසිරෙනු ඇති අතර නව ගොනු එකතු නොකරයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.