Git හි ගොනුවක් අස්ථාපනය කිරීමට ක්‍රම දෙකක් ඇත්තේ ඇයි?


1180

සමහර විට git මඟින් git rm --cachedගොනුවක් අස්ථාපනය කිරීමට යෝජනා කරයි , සමහර විටgit reset HEAD file . මා භාවිතා කළ යුත්තේ කවදාද?

සංස්කරණය කරන්න:

D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       a
nothing added to commit but untracked files present (use "git add" to track)

D:\code\gt2>git add a

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   a
#
D:\code\gt2>git commit -m a
[master (root-commit) c271e05] a
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a

D:\code\gt2>touch b

D:\code\gt2>git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       b
nothing added to commit but untracked files present (use "git add" to track)

D:\code\gt2>git add b

D:\code\gt2>git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   b
#

20
මන්ද? මම කියන්නේ එය Git හි විධාන රේඛා අතුරුමුහුණත organ න්ද්‍රීයව පරිණාමය වී ඇති අතර කිසි විටෙකත් දේවල් ස්ථාවර කිරීම සඳහා විශාල ප්‍රතිව්‍යුහගත කිරීමකට යටත් නොවූ බැවිනි. (ඔබ එකඟ නොවන්නේ නම්, සටහනක් ආකාරය git rmදෙකම හැකි අදියර සඳහා මකාදැමීම් හා unstageඅමතරව )
රෝමානු Starkov

3
@romkyns: Git හි අතුරුමුහුණත organ න්ද්‍රීයව පරිණාමය වූ නිසා එහි අමුතුකම් කිහිපයක් ඇති බව මම එකඟ වෙමි, නමුත් ඉවත් කිරීම අනිවාර්යයෙන්ම එකතු කිරීමක ප්‍රතිලෝම ශ්‍රිතයක් බැවින් එය rmඅහෝසි කිරීම තර්කානුකූල addනොවේද? rmහැසිරිය යුතු යැයි ඔබ සිතන්නේ කෙසේද?
Zaz

7
ඔබගේ ප්‍රශ්නයට ඇති එකම සත්‍ය පිළිතුර git initනම් HEADනැවත සැකසීමට කිසිවක් නොමැති වීමයි.
සැතපුම් මාර්ගය

මේ සඳහා හොඳම ලියකියවිලි
ScotttyBlades

4
Z සාස්, මම මගේ මතය දෙන්නම්. rmයුනික්ස් සන්දර්භය තුළ මකා දැමීම අදහස් කරයි. එය දර්ශකයට එකතු කිරීමේ ප්‍රතිවිරුද්ධ නොවේ. ලිපිගොනු ඉවත් කිරීමේ ශ්‍රිතයක් වේදිකාගත කිරීමේ තත්වය වෙනස් කිරීම සඳහා කාර්යයන් සමඟ පටවා නොගත යුතුය. ඒවා ඒකාබද්ධ කිරීමට පහසු වන ක්‍රියාත්මක කිරීමේ තොරතුරු තිබේ නම්, එය හුදෙක් ඇඟවුම් කරන්නේ git හි කල්පනාකාරී වියුක්ත තට්ටුවක් නොමැතිකමයි, එමඟින් භාවිතාව පැහැදිලි වේ.
ජෝෂුවා ගෝල්ඩ්බර්ග්

Answers:


1911

git rm --cached <filePath> ගොනුවක් වේදිකා ගත නොකරයි , එය ඇත්ත වශයෙන්ම ගොනුව (ය) රෙපෝ වෙතින් ඉවත් කිරීම (එය දැනටමත් සිදු කර ඇති බව උපකල්පනය කරයි) නමුත් ගොනුව ඔබේ වැඩ කරන ගසෙහි තබයි (ඔබට සොයා නොගත් ගොනුවක් ඉතිරි වේ).

git reset -- <filePath>ලබා දී ඇති ගොනුව (ය) සඳහා වේදිකාගත කරන ලද වෙනස්කම් අස්ථිර කරනු ඇත .

එයින් git rm --cachedකියැවෙන්නේ , ඔබ නව ගොනුවක් වේදිකා ගත කර ඇත්නම්, එය මූලික වශයෙන් පෙනෙනුයේ ඔබ එය කිසි විටෙකත් සිදු නොවූ බැවින් එය වේදිකා ගත කර ඇති බවයි.

Git යාවත්කාලීන කරන්න 2.24
මෙම නවතම git අනුවාදය තුළ ඔබට git restore --stagedඒ වෙනුවට භාවිතා කළ හැකිය git reset. Git docs බලන්න .


72
git rm --cachedගොනුව අස්ථිර බව මම කියමි , නමුත් එය වැඩ කරන නාමාවලියෙන් ඉවත් නොකරයි.
පියරේ ඩි ලෙස්පිනේ

4
එකතු කිරීම සඳහා වේදිකා ගත කරන ලද ගොනුවක් ඉවත් කිරීම සඳහා එය තවදුරටත් වේදිකා ගත නොකෙරේ. එය “එකතු කිරීම සඳහා වේදිකාගත කරන ලද ගොනුවක් අස්ථාපනය කිරීම” ලෙස හැඳින්විය හැකිය. අවසාන ප්‍රති result ලය වේදිකාගත මකාදැමීමක් නොවේ , එය නිසැකවම, එබැවින් වරදවා වටහා ගැනීම මුළුමනින්ම තේරුම් ගත හැකි යැයි මම සිතමි.
රෝමන් ස්ටාර්කොව්

4
එබැවින් සාමාන්‍යයෙන්, git rm --cached <filePath>සමහර ලිපිගොනු ගබඩාව කිසි විටෙකත් ගබඩාවේ නොතිබිය යුතු බව වටහා ගැනීමෙන් පසු එය ඉවත් කිරීමට භාවිතා කරයි : එබැවින් බොහෝ විට මෙම විධානය ක්‍රියාත්මක කර අදාළ ලිපිගොනු එකතු කිරීමgitignore . මම හරිද?
ඇඩ්‍රියන් බී

18
ප්රශ්නය සහ පිළිතුර යන දෙකෙහිම මෙම ඡන්ද බොහෝමයක් ඇති බැවින්, මම පැහැදිලිවම අපට unstageඅණක් ලබා ගැනීමට අවශ්ය බව කියමි git.
මිලොස්මන්

4
"git status" දැන් උපදෙස් දෙයි: වේදිකාවට "git restore --staged <file> ..." භාවිතා කරන්න
yucer

337

git rm --cachedදර්ශකයෙන් ගොනුවක් ඉවත් කිරීමට භාවිතා කරයි. ගොනුව දැනටමත් repo හි ඇති අවස්ථාවකදී, git rm --cachedගොනුව දර්ශකයෙන් ඉවත් කර එය වැඩ කරන නාමාවලියෙහි තබනු ඇති අතර බැඳීමක් දැන් එය repo වෙතින් ඉවත් කරයි. මූලික වශයෙන්, බැඳීමෙන් පසු, ඔබ ගොනුව හරවා දේශීය පිටපතක් තබා ගනු ඇත.

git reset HEAD file(පෙර සැකසුම මඟින් භාවිතා කරන --mixedධජය) ගොනු ප්රති දැනටමත් කොහෙද අවස්ථාවක, එය ඵලදායී ලෙස unstaging, ණයකට සිට එක් (හිස) සමග ගොනුවේ දර්ශකය අනුවාදය විස්ථාපනය බව වෙනස් වෙනස් විදිහට.

පරිවර්තනය නොකළ ගොනුව සම්බන්ධයෙන් ගත් කල, එය ගොනුව HEAD හි නොතිබූ බැවින් එය සම්පූර්ණ ගොනුව අස්ථාපනය කිරීමට යයි. මෙම අංශයෙන් git reset HEAD fileහා git rm --cachedසමාන වේ, නමුත් ඒවා සමාන නොවේ (දැනටමත් repo හි ඇති ලිපිගොනු සම්බන්ධයෙන් පැහැදිලි කර ඇති පරිදි)

යන ප්‍රශ්නයට Why are there 2 ways to unstage a file in git? - කිසි විටෙකත් git තුළ කිසිවක් කිරීමට එකම ක්රමයක් නොමැත. එහි සුන්දරත්වය එයයි :)


8
පිළිගත් පිළිතුර සහ මෙය යන දෙකම විශිෂ්ටයි, ඔබ එකක් එදිරිව අනෙකක් භාවිතා කරන්නේ ඇයිද යන්න පැහැදිලි කරන්න. නමුත් git වෙනස් ක්‍රම දෙකක් යෝජනා කරන්නේ මන්ද යන ව්‍යංග ප්‍රශ්නයට ඔවුන් කෙලින්ම පිළිතුරු නොදේ. OP හි උදාහරණයේ පළමු අවස්ථාවේ දී, git init එකක් දැන් සිදු කර ඇත. එවැනි අවස්ථාවකදී, git විසින් "git rm --cached" යෝජනා කරන්නේ එම අවස්ථාවේදී නිධිය තුළ කිසිදු කොමිස් නොමැති බැවින් HEAD වලංගු නොවන බැවිනි. "git reset HEAD - a" නිපදවයි: "මාරාන්තික: වලංගු ref ලෙස 'HEAD' නිරාකරණය කිරීමට අසමත් විය."
sootsnoot

5
'git checkout' සමඟ, ඔබ ගොනුවට කළ සියලු වෙනස්කම් ඔබට අහිමි නොවේද? මා වරදවා වටහා නොගතහොත් එය ගොනුවක් අස්ථාපනය කිරීම හා සමාන නොවේ.
ජෝන් ඩීගන්

there is never really only one way to do anything in git. that is the beauty of it- හ්ම් ... ඇයි? එකම පැහැදිලි ක්‍රමයක් ඇති විට එය සැමවිටම විශිෂ්ටයි. මෙය අපගේ කාලය හා මතකය මොළයේ ඉතිරි කරයි))
ඔටෝ ෂවාඩ්සේ

130

සරලවම:

  • git rm --cached <file> ගොනුව සම්පූර්ණයෙන්ම ලුහුබැඳීම නවත්වයි (සරල git rm* මෙන් නොව එය ගොනු පද්ධතියේ තබයි )
  • git reset HEAD <file> අන්තිම බැඳීමෙන් පසු ගොනුවේ සිදුකරන ලද කිසියම් වෙනස් කිරීමක් අස්ථිර කරයි (නමුත් ඒවා විධාන නාමයෙන් යෝජනා කරන දෙයට පටහැනිව ගොනු පද්ධතිය තුළ ඒවා ආපසු හරවන්නේ නැත **). ගොනුව සංශෝධන පාලනය යටතේ පවතී.

ගොනුව මීට පෙර සංශෝධන පාලනයේ නොතිබුනේ නම් (එනම් ඔබ සතුව තිබූ ගොනුවක් අස්ථාපනය කරමින් සිටී git add පළමු වරට සංස්කරණය නම්), එවිට විධාන දෙක එකම බලපෑමක් ඇති කරයි, එබැවින් මේවායේ පෙනුම “යමක් කිරීමේ ක්‍රම දෙකක් ".

* අවවාදය මතක තබා ගන්න rew ඩ්‍රූට් ඔහුගේ පිළිතුරෙහි සඳහන් git rm --cachedකර ඇත්තේ මීට පෙර සිදු කරන ලද ගොනුවක් පිළිබඳව ය ගබඩාවට . මෙම ප්‍රශ්නයේ සන්දර්භය තුළ, ගොනුවක් දැන් එකතු කර ඇති අතර තවමත් බැඳී නොමැති නම්, කරදර වීමට කිසිවක් නැත.

** එහි නම නිසා git reset විධානය භාවිතා කිරීමට ලැජ්ජා සහගත කාලයක් තිස්සේ මම බිය වූවෙමි - අදටත් මම බොහෝ විට සින්ටැක්ස් දෙස බලන්නේ මා ඉස්කුරුප්පු නොකිරීමට වග බලා ගැනීම සඳහා ය. ( යාවත්කාලීන කිරීම : මම අවසාන වශයෙන් tldr පිටුවක භාවිතය සාරාංශgit reset කිරීමට කාලය ගත්තෙමි , එබැවින් දැන් එය ක්‍රියාත්මක වන ආකාරය පිළිබඳ වඩා හොඳ මානසික ආකෘතියක් මා සතුව ඇත, සහ යම් විස්තරයක් මට අමතක වූ විට ඉක්මන් යොමු කිරීමක් ඇත.)


එයgit rm <file> --cached
නියොන්මේට්

8
මෙම පිළිතුරට 2015 අගෝස්තු 4 වන දින සංස්කරණය කිරීම සමස්ත දියුණුවක් යැයි මම නොසිතමි . එයට ස්ථාවර තාක්ෂණික නිරවද්‍යතාවයක් තිබිය හැකිය (එය තක්සේරු කිරීමට මට සුදුසුකම් නැතැයි මට හැඟේ), නමුත් “දැනට සොයා නොගත් ගොනුවක් ලුහුබැඳීම ආරම්භ කිරීම සඳහා අත්‍යවශ්‍යය සකසන්න එපා” වැනි භාෂාව හඳුන්වා දීමෙන් පිළිතුරේ ස්වරය එතරම් ප්‍රවේශ විය නොහැකි යැයි මම බිය වෙමි. ", සහ" දර්ශකය "සහ" හෙඩ් "වැනි ප්‍රභාෂාව භාවිතා කිරීම, හරියටම ආරම්භකයින් බිය ගන්වන ආකාරයේ දේවල්. යමෙකුට හැකි නම්, කරුණාකර නවක-හිතකාමී භාෂාවක් යථා තත්වයට පත් කිරීමට සංස්කරණය කරන්න.
වොල්ඩීරියස්

5
@Waldyrious සමඟ එකඟ වන්න. මුල් පිළිතුර git පෙළ පොතෙන් කෙළින්ම නොතිබෙන්නට ඇති නමුත් එය ප්‍රමාණවත් තාක්ෂණික මට්ටමින් ප්‍රශ්නයට පිළිතුරු සපයයි. තාක්ෂණික විස්තර පැහැදිලි කළ යුතුව තිබුණේ මුල් අභිප්‍රාය අපැහැදිලි කළ සංස්කරණයක් ලෙස නොවේ.
සයිමන් රොබ්

මම සංස්කරණය ආපසු හරවා ඇත. සංස්කරණයේ පිළිතුරේ පැහැදිලිකමට අහිතකර බව ප්‍රජාව (කලින් අදහස් දැක්වීම් සහ ඔවුන් ලබා දුන් ඡන්ද වලින්) ප්‍රමාණවත් වලංගු භාවයක් ඇති බව මම විශ්වාස කරමි.
waldyrious

සටහන rew ඩ්‍රූට් අනතුරු අඟවන්නේ භාවිතා කිරීම rm --cachedසහ තල්ලු කිරීම, එකම ශාඛාවක් අදින ඕනෑම අයෙකුට ඔවුන්ගේ වැඩ කරන ගසෙන් ගොනුව (ය) ඉවත් කරනු ඇති බවයි.
ටොම් හේල්

53

මෙම ත්‍රෙඩ් එක ටිකක් පරණයි, නමුත් මට තවමත් කුඩා නිරූපණයක් එක් කිරීමට අවශ්‍යයි, මන්ද එය තවමත් බුද්ධිමය ගැටලුවක් නොවන නිසා:

me$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   to-be-added
#   modified:   to-be-modified
#   deleted:    to-be-removed
#

me$ git reset -q HEAD to-be-added

    # ok

me$ git reset -q HEAD to-be-modified

    # ok

me$ git reset -q HEAD to-be-removed

    # ok

# or alternatively:

me$ git reset -q HEAD to-be-added to-be-removed to-be-modified

    # ok

me$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   to-be-modified
#   deleted:    to-be-removed
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   to-be-added
no changes added to commit (use "git add" and/or "git commit -a")

git reset HEAD(නොමැතිව -q) නවීකරණය කරන ලද ගොනුව පිළිබඳව අනතුරු ඇඟවීමක් ලබා දෙන අතර එහි පිටවීමේ කේතය 1 වන අතර එය ස්ක්‍රිප්ටයක දෝෂයක් ලෙස සලකනු ලැබේ.

සංස්කරණය කරන්න: git checkout HEAD to-be-modified to-be-removedඅස්ථායී කිරීම සඳහා ද ක්‍රියා කරයි, නමුත් වැඩපලෙන් වෙනස සම්පූර්ණයෙන්ම ඉවත් කරයි

Git 2.23.0 යාවත්කාලීන කරන්න: වරින් වර විධාන වෙනස් වේ. දැන්, git statusමෙසේ පවසයි:

  (use "git restore --staged <file>..." to unstage)

... එය වර්ග තුනම වෙනස් කිරීම සඳහා ක්‍රියා කරයි


ස්තූතියි, පළමු පිළිතුරු දෙකෙන් (බොහෝ විට පාරිභාෂිතය පිළිබඳ මගේ නොදැනුවත්කම) සම්පූර්ණයෙන්ම පැහැදිලි නොවූයේ, git reset ගොනුවේ වෙනස් කිරීම් දේශීයව ඉතිරි කර ඇති බවය (ඒවා නැවත ලබා දෙන git checkout වලට වඩා වෙනස්ව).
සුප්ඩෝග්

පැරණි අනුවාදය නව අනුවාදවල ඇති ලිපිගොනු මකා දමන බැවින් ඔබ අනුවාදය ගැන ආරම්භයේ දී අනතුරු ඇඟවීමක් කළ යුතුය
ලුයිස් මොරිසියෝ

An ඩැනියෙල් ඇල්ඩර්, මම නැවත පරීක්ෂා කළෙමි, එය මැකෙන්නේ නැත, මගේ වැරැද්ද.
ලුයිස් මොරිසියෝ

36

ඔබ කැපවීමට අකමැති ලිපිගොනු අහම්බෙන් වේදිකා ගත කර ඇත්නම් සහ වෙනස්කම් ඔබ තබාගෙන සිටින බවට සහතික වීමට අවශ්‍ය නම්, ඔබට මෙයද භාවිතා කළ හැකිය:

git stash
git stash pop

මෙය HEAD වෙත යළි පිහිටුවීම සිදු කරන අතර ඔබගේ වෙනස්කම් නැවත ක්‍රියාත්මක කරයි, කැපවීම සඳහා තනි ගොනු නැවත වේදිකා ගත කිරීමට ඔබට ඉඩ සලසයි. අදින්න ඉල්ලීම් ( git stash ; git checkout -b <feature> ; git stash pop) සඳහා විශේෂාංග ශාඛාවක් නිර්මාණය කිරීමට ඔබට අමතක වී ඇත්නම් මෙයද ප්‍රයෝජනවත් වේ.


3
මෙය පිරිසිදු විසඳුමක් වන අතර "git rm" ටයිප් කිරීමට වඩා අඩු කනස්සල්ලට පත්ව ඇත
Subimage

1
git stashවෙනත් ආශ්‍රිත ප්‍රතිලාභ ඇත, මන්ද එය අනාගතයේ දී ලබා ගත හැකි පරාවර්තනයේ ඇතුළත් කිරීම් නිර්මාණය කරයි. සැකයක් ඇති විට, ඉදිරියට ගොස් git stash(උදා: git stash save -u "WIP notes to self"'-u' යනු අළුත් / නොකැඩූ ඕනෑම ලිපිගොනු තොගයක් ඇතුළත් කිරීම ය) ... ඉන්පසු ස්ටෑෂ් කොමිස් git reflog show stashසහ ඒවායේ ෂා ලැයිස්තුව බැලීමට උත්සාහ කරන්න.මම ෂෙල් එකක් නිර්දේශ කරමි අන්වර්ථය වැනිalias grs="git reflog show stash"
cweekly

15

සැක සහිත ගොනුව දැනටමත් repo හි සහ අනුවාද පාලනය යටතේ තිබේ නම් මෙම විධානයන් 2 ට සියුම් වෙනස්කම් කිහිපයක් ඇත:

  • git reset HEAD <file> වත්මන් බැඳීම තුළ ගොනුව අස්ථාපනය කරයි.
  • git rm --cached <file>අනාගත කොමිස් සඳහාද ගොනුව අස්ථාපනය කරනු ඇත. එය නැවත එකතු කරන විට එය අස්ථිරයි git add <file>.

තවත් වැදගත් වෙනසක් තිබේ:

  • ධාවනය කිරීමෙන් පසු git rm --cached <file>දුරස්ථ ඔබේ ශාඛා තල්ලු සහ දුරස්ථ ඔබේ ශාඛා ඇද ඕනෑම ගොනු වනු ඇත ඇත්තටම ඔවුන්ගේ ෆෝල්ඩරය මකා, ඔබේ දේශීය කම්කරු ගොනු පමණක් (එනම් ශාරීරිකව ෆෝල්ඩරය මකා නැත) untracked බවට පත් කර ඇතත්.

කණ්ඩායමේ සෑම සංවර්ධකයෙකුටම වෙනස් වින්‍යාසයක් (එනම් වෙනස් පාදක යූආර්එල්, අයිපී හෝ වරාය සැකසුම) ඇති වින්‍යාස ගොනුවක් ඇතුළත් ව්‍යාපෘති සඳහා මෙම අවසාන වෙනස වැදගත් වේ, එබැවින් ඔබ git rm --cached <file>ඔබේ ශාඛාව අදින ඕනෑම අයෙකු භාවිතා කරන්නේ නම් අතින් නැවත ප්‍රතිස්ථාපනය කිරීමට සිදුවේ. වින්‍යාසය සාදන්න, නැතහොත් ඔබට ඒවා ඔබගේ ඒවා යැවිය හැකි අතර ඔවුන්ට එය නැවත ඔවුන්ගේ අයිපී සැකසුම් (යනාදිය) වෙත නැවත සංස්කරණය කළ හැකිය, මන්ද මකාදැමීම මඟින් ඔබේ ශාඛාව දුරස්ථයෙන් ඇද ගන්නා පුද්ගලයින්ට පමණක් බලපෑම් කරයි.


10

අපි ඔබට stageසම්පූර්ණ ඩිරෙක්ටරියක් හරහා කියමු git add <folder>, නමුත් ඔබට අවශ්‍ය වන්නේ ගොනුවක් වේදිකාගත කළ ලැයිස්තුවෙන් බැහැර කිරීමටයි (එනම් ක්‍රියාත්මක වන විට ජනනය වන ලැයිස්තුව git status) සහ බැහැර කරන ලද ගොනුව තුළ වෙනස් කිරීම් තබා ගන්න (ඔබ යමක් වැඩ කරමින් සිටි අතර එය කැපවීමට සූදානම් නැත, නමුත් ඔබේ වැඩ නැති කර ගැනීමට ඔබට අවශ්‍ය නැත ...). ඔබට සරලව භාවිතා කළ හැකිය:

git reset <file>

ඔබ ක්රියාත්මක කරන විට git status, ඔබ ඕනෑම දෙයක් ගොනු (ව) බව පෙනෙනු ඇත resetවේ unstagedඔබ ගොනු ඉතිරි addedතුළ තවමත් stagedලැයිස්තුව.


10

1.

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   a

(වේදිකාවට "git rm --cached ..." භාවිතා කරන්න)

  • git යනු දර්ශක පද්ධතියකි

  • ඔබේ දර්ශකය වෙනස් කිරීමට ඔබට තවමත් බැඳීමක් නොමැත

  • 'පෙන්වා ඇති බාල්දියෙන් ලිපිගොනු ඉවතට' ගත හැකි එකම ක්‍රමය නම් වෙනස්කම් සඳහා නැරඹීමට ඔබ git ට පැවසූ ගොනු ඉවත් කිරීමයි

2.

D:\code\gt2>git commit -m a
[master (root-commit) c271e05] a
0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 a

git commit -ma

  • ඔබ, commited ' ගැලවීම '

3.

D:\code\gt2>git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   b
#

(වේදිකාවට "git reset HEAD ..." භාවිතා කරන්න)

  • ඔබ මේ අවස්ථාවේදී ඔබේ කේතයේ කැපවීමක් කර ඇත
  • දැන් ඔබට ඔබගේ දර්ශකය ' අන්තිම සුරැකීම වෙත ආපසු හරවන්න ' වෙත නැවත සැකසිය හැක .

1
IMO, ප්‍රශ්නයට නිසි ලෙස පිළිතුරු සපයන එකම පිළිතුර මෙයයි. එය ඇත්ත වශයෙන්ම ප්‍රශ්නයට පිළිතුරු සපයයි, එය 'git rm --cached' සහ 'git reset HEAD' අතර ඇති වෙනස්කම් මොනවාද, නමුත් 'git නොගැලපෙන ලෙස විකල්ප දෙකම ලබා දෙන්නේ ඇයි?', පිළිතුර නම් නැවත සැකසීමට HEAD නොමැති බවයි. ඔබ git initපළමු වරට.
සැතපුම් මාර්ගය

6

භාවිතා කරන්න:

git reset HEAD <filename>

මෙය ගොනුව අස්ථායී කර ඔබ කළ වෙනස්කම් තබා ගනී, එවිට ඔබට අවශ්‍ය නම් ශාඛා වෙනස් කළ හැකි අතර git addඒ වෙනුවට වෙනත් ලිපිගොනු වෙත මාරු කළ හැකිය . සියලුම වෙනස්කම් තබා ඇත.


5

කිසිවෙකු පුදුමයට කරුණක් නොවේ ( http://git-scm.com/docs/git-reflog ):

# git reflog
<find the place before your staged anything>
# git reset HEAD@{1}

පරාවර්තනය යනු රෙපෝ හි වෙනස්කම් නිරීක්ෂණය කිරීම පමණක් නොව, පරිශීලක ක්‍රියාවන් ද නිරීක්ෂණය කරයි (උදා: අදින්න, විවිධ ශාඛාවලට පිවිසීම යනාදිය) සහ එම ක්‍රියාවන් අහෝසි කිරීමට ඉඩ දෙයි. එබැවින් වැරදීමකින් වේදිකා ගත කරන ලද ගොනුව අස්ථාපනය කරනවා වෙනුවට, ඔබ ලිපිගොනු වේදිකාගත නොකළ ස්ථානයට ආපසු යා හැකිය.

මෙය සමාන වේ git reset HEAD <file> නමුත් සමහර අවස්ථාවල දී වඩාත් කැටිති විය හැකිය.

කණගාටුයි - ඇත්ත වශයෙන්ම ඔබේ ප්‍රශ්නයට පිළිතුරු නොදීම, නමුත් මම නිතර භාවිතා කරන ලිපිගොනු අස්ථායී කිරීමට තවත් ක්‍රමයක් පෙන්වා දීම (මම රයන් ස්ටුවර්ට්ගේ පිළිතුරු හා වොල්ඩීරියස් වැනි පිළිතුරු සඳහා එකකි.);) එය උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.


3

මෙහෙයුම් පද්ධතියක් එහි අනුවාදය ඉවත් නොකර ඩිරෙක්ටරියෙන් ගොනුව ඉවත් කරන ආකාරයටම , ගොනුවක් git rm --cached <file>සරල ලෙස කළ git rm <file>හැකි නාමාවලියෙන් එය ඉවත් නොකර දර්ශකයෙන් එය ඉවත් කරන බව මට පෙනේ rm <file>.


2

2.23 සහ ඊට වැඩි අනුවාද සඳහා පමණි,

මෙම යෝජනා වෙනුවට, ඔබට ගොනුව (ගොනු) git restore --staged <file>සඳහා භාවිතා කළ හැකිය unstage.


එය විකල්ප සමඟ කටයුතු --stageමෙන්ම --staged.
dhana1310
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.