Git වෙන් කළ හිසක් සවි කරන්න?


1478

මම මගේ ගබඩාවේ යම් වැඩක් කරමින් සිටි අතර ගොනුවක දේශීය වෙනස්කම් ඇති බව දුටුවෙමි. මට ඒවා තවදුරටත් අවශ්‍ය නොවූ නිසා නැවුම් පිටපතක් පරීක්ෂා කර බැලිය හැකි යැයි සිතමින් මම ගොනුව මකා දැමුවෙමි. මට Git ට සමාන දෙයක් කිරීමට අවශ්‍ය විය

svn up .

භාවිතා git pullකිරීම වැඩ කරන බවක් නොපෙනුණි. සමහර අහඹු සෙවීම් නිසා කවුරුහරි නිර්දේශ කළ වෙබ් අඩවියකට මා යොමු විය

git checkout HEAD^ src/

( srcමකා දැමූ ගොනුව අඩංගු නාමාවලිය වේ).

දැන් මට තේරුණා මට හිසක් තියෙනවා කියලා. එය කුමක්දැයි මට අදහසක් නැත. මම අහෝසි කරන්නේ කෙසේද?


72
git checkout masterඔබව නැවත ප්‍රධාන ශාඛාවට ගෙන යනු ඇත. වැඩ කරන පිටපත් වෙනස් කිරීම් ඉවත් කිරීමට ඔබට අවශ්‍ය නම්, ඔබට බොහෝ විට එය කිරීමට අවශ්‍ය විය git reset --hard.
අබේ වොල්කර්


ඔබ බැඳී නොසිටින්නේ නම් ඔබට එය කළ හැකියgit checkout -- src/
thesummersign

මෙය උත්සාහ කරන්න: සබැඳිය . කෙටියෙන් කිවහොත්create temp branch - checkout temp branch - checkout master - delete temp branch
fidev

BeAbeVoelker අදහස් දැක්වීමේදී ඔබ අදහස් කළේ working copy changesකුමක්ද? ඔබ සඳහන් කරන්නේ වෙනත් බැඳීමක් පරික්ෂා කිරීමෙන් පසු ඔබ ලිපිගොනු වල සිදු කළ වෙනස්කම් (එනම්, ඔබ වෙන්වූ ප්‍රධාන තත්වයේ සිටියදී සිදු කළ වෙනස්කම්) ද?
මිං ට්‍රාන්

Answers:


2195

වෙන්වූ හිස යනු ඔබ තවදුරටත් ශාඛාවක නොසිටීමයි, ඔබ ඉතිහාසයේ එක් කැපවීමක් පරීක්ෂා කර ඇත (මේ අවස්ථාවේ දී HEAD ට පෙර කළ කැපවීම, එනම් HEAD ^).

වෙන්වූ HEAD හා සම්බන්ධ ඔබගේ වෙනස්කම් මකා දැමීමට ඔබට අවශ්‍ය නම්

ඔබට අවශ්‍ය වන්නේ ඔබ සිටි ශාඛාව පරීක්ෂා කිරීම පමණි, උදා

git checkout master

ඊළඟ වතාවේ ඔබ ගොනුවක් වෙනස් කර එය දර්ශකයේ ඇති තත්වයට යථා තත්වයට පත් කිරීමට අවශ්‍ය නම්, පළමුව ගොනුව මකා නොදමන්න, කරන්න

git checkout -- path/to/foo

මෙමඟින් ගොනුව foo දර්ශකයේ ඇති තත්වයට යථා තත්වයට පත් කරනු ඇත.

ඔබගේ වෙනස්කම් වෙන් කළ හෙඩ් සමඟ සම්බන්ධ කර ගැනීමට ඔබට අවශ්‍ය නම්

  1. ධාවනය git branch tmp- මෙය නව ශාඛාවක ඔබගේ වෙනස්කම් සුරකිනු ඇත tmp.
  2. දුවන්න git checkout master
  3. ඔබ ඔබ වෙත සිදු කරන ලද වෙනස් කම් සංස්ථාගත කිරීම සඳහා වූ කැමති නම් master, ලකුණු git merge tmpවලින් masterශාඛා. masterධාවනය කිරීමෙන් පසු ඔබ ශාඛාවේ සිටිය යුතුය git checkout master.

6
"මෙය ඔබ ගොනුවෙහි යම් වෙනසක් කිරීමට පෙර තිබූ ගොනුව යථා තත්වයට පත් කරනු ඇත." -> එය එය දර්ශකයේ ඇති තත්වයට යථා තත්වයට පත් කරනු ඇත - කරුණාකර සංස්කරණය කරන්න
Mr_and_Mrs_D

88
මෙම දෝෂය මුලින්ම සිදුවන්නේ ඇයි? මෙය මම git ට වෛර කරන එක් කරුණකි - විටෙක අහඹු ලෙස හැසිරීම. මර්කුරියල් සමඟ කිසි විටෙකත් එවැනි ගැටළු ඇති නොවීය.
වයලට් ජිරාෆ්

98
@ වයලට් ජිරාෆ් එය දෝෂයක් හෝ අහඹු දෙයක් නොවේ - එය හුදෙක් ඔබ කලින් කළ බැඳීමක් පරීක්ෂා කර බැලීමේදී ඔබේ ගබඩාව තුළට යන තත්වයයි. “වෙන්වූ හිස” අනතුරු ඇඟවීමක් ලෙස සේවය කරන්නේ ඔබ එම ස්ථානයේ සිට කිසියම් වැඩක් කිරීමට අදහස් කරන්නේ නම් ඔබට ශාඛාවක් නිර්මාණය කිරීමට හෝ යොමු කිරීමට අවශ්‍ය විය හැකිය. නමුත් ඔබ එම ටැගය බැලීමට හෝ කැපවීමට කැමති නම්, වෙන්වූ හිසක සිටීමේ වරදක් නැත.
නීල් නේමන්

22
ඔබ වෙන්වූ හිසට කැපවී ඇත්නම් මෙය නොකරන්න, වෙනත් පිළිතුරු බලන්න. එසේ නම්, ඔබට පෙර Previous HEAD position was 7426948...
KCD

9
Io වයලට් ජිරාෆ්: ඔබට මර්කුරියල් මත පදනම්ව සිදුවන්නේ කුමක්ද යන්න පිළිබඳ මානසික ආකෘතියක් ඇත, නමුත් ඔබ Git භාවිතා කරයි. ඔබේ මානසික ආකෘතිය Git ගේ ආකෘතියට ගැලපෙන පරිදි සකස් කිරීමට ඔබ අකමැති නම්, එවිට දේවල් අහඹු ලෙස පෙනෙනු ඇත. එය හරියට ඔබ වී.ආර්. ඇස් කණ්ණාඩි සමඟ පිටත ඇවිදිමින් සිටින අතර, ඔබ සිතන්නේ ඔබ ගුවන් යානයක් පියාසර කරන නමුත් ඔබ ඇත්තටම වීදිය තරණය කරන බවයි. ඔයා කාර් වලට හසුවෙනවා.
iconoclast

482

ඔබට අහිමි වීමට අවශ්‍ය නැති ගොනු වෙනස් කර ඇත්නම්, ඔබට ඒවා තල්ලු කළ හැකිය. මම ඒවා වෙන් කරන ලද මාදිලියේ සිදු කර ඇති අතර ඉන් පසුව ඔබට තාවකාලික ශාඛාවකට ගොස් පසුව මාස්ටර් සමඟ ඒකාබද්ධ විය හැකිය.

git commit -m "....."
git branch my-temporary-work
git checkout master
git merge my-temporary-work

උපුටා ගැනීම:

වෙන්වූ හිසකින් කරන ලද කැපවීමෙන් කුමක් කළ යුතුද?


27
මෙය වඩාත් කැමති විසඳුමක් ලෙස මම දකිමි - විශේෂයෙන් ඔබ තනි අනුවාදය පරික්ෂා කිරීමේදී ඔබ සිදු කළ වෙනස්කම් තබා ගැනීමට ඔබට අවශ්‍ය නම්.
adswebwork

10
@adswebwork: මම එකඟයි. අනෙක් සියලුම පිළිතුරු යෝජනා කරන්නේ පෙර තත්වයකට ආපසු යාම සහ වෙන්වූ ප්‍රධාන තත්වයේ දේශීයව සිදු වූ වෙනස්කම් නැතිවීම ය.
Sk8erPeter

6
ඇයි නැත්තේ git stash? එය මගේ මතකයට එන පළමු දෙයයි. නව ශාඛාවක් නිර්මාණය කිරීම අතිරික්තයක් වනු ඇත.
thesummersign

3
ඔබට git rebase my-temporary-workශාඛාව මකාදැමිය git branch -d my-temporary-workහැකි අතර එමඟින් ඔබ නිවැරදි ශාඛාවට කැපවී සිටින බවක් පෙනේ.
සොල්ටන්

@geekay git stashමෙම නඩුවේ පරිපූර්ණ මෙවලම මෙන් පෙනේ. එය සාක්ෂාත් කර ගැනීම සඳහා යෝජිත පියවර සමඟ කරුණාකර පිළිතුරක් ලිවිය හැකිද?
සොල්ටන්

159

තාවකාලික ශාඛාවක් නිර්මාණය නොකර විසඳුමක්.

ඔබ දැනටමත් මෙම ප්‍රකාරයේදී යමක් වෙනස් කර ඇති විට (“නිවැරදි කරන්න”) වෙන්වූ HEAD තත්වයෙන් පිටවන ආකාරය සහ විකල්පයක් ලෙස ඔබේ වෙනස්කම් සුරැකීමට අවශ්‍ය නම්:

  1. ඔබට තබා ගැනීමට අවශ්‍ය වෙනස්කම් කරන්න. වෙන්වූ හෙඩ් තත්වයේ ඔබ විසින් සිදු කරන ලද කිසියම් වෙනසක් භාර ගැනීමට ඔබට අවශ්‍ය නම්, ඒවා සිදු කරන්න. මෙන්:

    git commit -a -m "your commit message"
    
  2. ඔබට තබා ගැනීමට අවශ්‍ය නොවන වෙනස්කම් ඉවතලන්න. දෘ reset යළි පිහිටුවීම මඟින් ඔබ විසින් වෙන් කරන ලද HEAD තත්වයේ සිදු කරන ලද නොගැලපෙන වෙනස්කම් ඉවතලනු ඇත:

    git reset --hard
    

    (මෙය නොමැතිව, 3 වන පියවර අසාර්ථක වනු ඇත, වෙන් කරන ලද HEAD හි වෙනස් නොකළ අවිධිමත් ගොනු ගැන පැමිණිලි කරයි.)

  3. ඔබේ ශාඛාව බලන්න. ඔබ කලින් වැඩ කළ ශාඛාව පරීක්ෂා කිරීමෙන් වෙන්වූ HEAD තත්වයෙන් ඉවත් වන්න, උදාහරණයක් ලෙස:

    git checkout master
    
  4. ඔබේ බැඳීම් භාර ගන්න. වෙනත් ප්‍රශ්නයකට මගේ පිළිතුරෙහි පෙන්වා ඇති පරිදි, චෙරි අච්චාරු දැමීමෙන් ඔබ වෙන් කළ හෙඩ් තත්වයෙන් කළ කැපවීම් දැන් ඔබට භාර ගත හැකිය .

    git reflog
    git cherry-pick <hash1> <hash2> <hash3> …
    

මෙම git reset --hardමම උඩුගං මූලාශ්රය වීමට අවශ්ය සහ දේශීය වෙනස්කම් ඉවත් කළ යුතු නිසා හරියටම, මම අවශ්ය විය.
මාකස් සෙලර්

132

වෙන්වූ හිස යනු:

  1. ඔබ තවදුරටත් ශාඛාවක් මත නැත,
  2. ඔබ ඉතිහාසයේ එක් කැපවීමක් පරීක්ෂා කර ඇත

ඔබට කිසිදු වෙනසක් නොමැති නම්: පහත දැක්වෙන විධානය ක්‍රියාත්මක කිරීමෙන් ඔබට මාස්ටර් වෙත මාරු විය හැකිය

  git checkout master

ඔබට තබා ගැනීමට අවශ්‍ය වෙනස්කම් තිබේ නම්:

වෙන් කරන ලද හෙඩ් එකක් නම්, නම් කරන ලද ශාඛාවක් යාවත්කාලීන නොවන්නේ නම්, සාමාන්‍ය පරිදි වැඩ කරයි. ඔබගේ කැපවූ වෙනස්කම් සමඟ ප්‍රධාන ශාඛාව යාවත්කාලීන කර ගැනීම සඳහා, ඔබ සිටින තැන තාවකාලික ශාඛාවක් සාදන්න (මේ ආකාරයෙන් තාවකාලික ශාඛාව ඔබ විසින් වෙන් කරන ලද හෙඩ් හි සිදු කර ඇති සියලු කැපවීම් වෙනස්කම් ඇති කරයි), පසුව ප්‍රධාන ශාඛාවට මාරු වී තාවකාලික ශාඛාව ඒකාබද්ධ කරන්න ගුරුවරයා.

git branch  temp
git checkout master
git merge temp

2
පරිපූර්ණයි, පසුව ශාඛා තාවකාලික ඉවත් කිරීමෙන් පසු
ඩේවි මෙනීස්

65

මෙන්න මම වෙන්වූ හිසක් මත සිටින බවත් දැනටමත් යම් යම් වෙනස්කම් කර ඇති බවත් වටහා ගැනීමෙන් පසුව මම කළ දේ.

මම වෙනස්කම් කළා.

$ git commit -m "..."
[detached HEAD 1fe56ad] ...

මට මතකයි හෑෂ් (1fe56ad). ඊට පස්සේ මම ඉන්න ඕන ශාඛාව පරීක්ෂා කළා.

$ git checkout master
Switched to branch 'master'

අවසාන වශයෙන් මම කැපවීමේ වෙනස්කම් ශාඛාවට අදාළ කළෙමි.

$ git cherry-pick 1fe56ad
[master 0b05f1e] ...

මම හිතන්නේ මෙය තාවකාලික ශාඛාවක් නිර්මාණය කරනවාට වඩා ටිකක් පහසුයි.


2
මෙය පිළිතුර විය යුතුය. එය ඔබගේ නිරුවත් ලිපිගොනු නැවත ලබා ගනී.
BlindWanderer

2
ඔව්, මෙය සැබවින්ම කළ හැකි සරලම දෙයයි - ඊළඟ වතාවේදී වෙබය සෙවීමකින් තොරව මතක තබා ගැනීමට තරම් සරලයි. කැපවීම, හැෂ් සටහන් කිරීම, ඔබ කැපවීමට අදහස් කළ ශාඛාවට ආපසු යන්න, සහ git cherry-pick <hash>.
මේසන්

විසඳුමට ස්තූතියි. මෙය උපකාරී විය. මගේ ස්වාමියා සහ සම්භවය / ස්වාමියා එකම කැපවීමකට යොමු වන පරිදි මට "git push origin master" කිරීමට සිදු වූ බව ද මම එකතු කරමි.
turnip424

1
මෙය අත්‍යවශ්‍යයෙන්ම ටානියස්ගේ පිළිතුරයි (මීට වසරකට පෙර පළ කරන ලදි).
පීටර් මෝර්ටෙන්සන්

ස්තූතියි මෙම ප්‍රීතිමත් තේරීම අවසන් වරට වෙනස් වූ හිස වෙනස් කිරීම
ඔමේගා කියුබ්

57

ඔබ වෙනස්කම් සිදු කර ඔබ වෙන්වූ හිසක් මත සිටින බව වටහා ගත්තා නම්, ඔබට කළ හැක්කේ: stash -> checkout master -> stash pop:

git stash
git checkout master   # Fix the detached head state
git stash pop         # Or for extra safety use 'stash apply' then later 
                      #   after fixing everything do 'stash drop'

කිසිවක් සිදු නොවූවාක් මෙන් ඔබේ නොගැලපෙන වෙනස්කම් සහ සාමාන්‍ය “අමුණා ඇති” හෙඩ් ඔබට ඇත.


2
මෙම නරක පිරිමි ළමයා පිටු සලකුණු කර ඇත - තාවකාලික ශාඛාවක් සෑදීම ඉතිරි කරයි. සංග්‍රහයක් කළා.
ටිම් ටයිලර්

1
මම බොහෝ විට අවසන් වන්නේ ගිට් උප මොඩියුලයක් පරීක්ෂා කිරීමෙන් පසුව එහි වෙනස්කම් සිදු කිරීමෙන් පසුවය. දේවල් නිවැරදි කර ගැනීමට හොඳම සහ පහසුම විසඳුම මෙය බව මට පෙනී යන අතර එමඟින් මගේ වෙනස්කම් ආරක්ෂා කර ගත හැකිය.
user5359531

1
ඔබ දැනටමත් වෙන්වූ තත්වයක වෙනස්කම් සිදු කර ඇත්නම් මෙය ක්‍රියාත්මක නොවේද?
ඩැනියෙල්

43

හෙඩ් යනු දර්ශකයක් වන අතර, එය විශේෂිත කැපවීමකට - සෘජුව හෝ වක්‍රව යොමු කරයි:

අමුණා ඇති   සමහර අනුයුක්තව සේවය කරන බව හිස මාර්ගයෙන් ශාඛා (එනම් එය පෙන්වා දෙයි ශාඛාවක් වෙත).
වෙන්වූ හෙඩ් යන්නෙන් අදහස් කරන්නේ එය කිසිදු ශාඛාවකට සම්බන්ධ නොවන බවයි, එනම් එය යම්කිසි කැපවීමකට සෘජුවම යොමු කරයි.

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

වෙනත් විදිහකින්:

  • එය සෘජුවම බැඳීමක් වෙත යොමු කරන්නේ නම්, හෙඩ් වෙන් කරනු ලැබේ.
  • එය වක්‍රව බැඳීමක් වෙත යොමු කරන්නේ නම් , (එනම් එය ශාඛාවකට යොමු කරයි, එය බැඳීමකට යොමු කරයි), HEAD අමුණා ඇත.

අමුණා ඇති / වෙන් කරන ලද හෙඩ් සමඟ ඇති තත්වයන් වඩා හොඳින් අවබෝධ කර ගැනීම සඳහා, ඉහත පින්තූරවල හතර ගුණයකට තුඩු දෙන පියවර පෙන්වමු.

අපි නිධියේ එකම තත්වයෙන් ආරම්භ කරමු (සියලුම චතුරස්රවල පින්තූර සමාන වේ):

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


දැන් අපට ඉටු කිරීමට අවශ්‍ය වන්නේ git checkout- තනි පින්තූරවල විවිධ ඉලක්ක සහිතව (ඒවාට ඉහළින් ඇති විධානයන් අප එම විධානයන් පමණක් ක්‍රියාත්මක කිරීමට යන බව අවධාරණය කිරීම සඳහා අඳුරු වී ඇත ):

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


එම විධානයන් සිදු කිරීමෙන් පසු තත්වය මෙයයි :

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

ඔබට පෙනෙන පරිදි, HEAD විධානයේ ඉලක්කය වෙත යොමු කරයි git checkout- ශාඛාවකට (චතුරස්රයේ පළමු රූප 3), හෝ (කෙලින්ම) බැඳීමකට ( චතුරස්රයේ අවසාන රූපය).

වැඩ කරන නාමාවලියෙහි අන්තර්ගතය ද සුදුසු බැඳීමකට (ස්නැප්ෂොට්) අනුකූල වන පරිදි වෙනස් වේ, එනම් හෙඩ් විසින් පෙන්වා දී ඇති (සෘජුව හෝ වක්‍රව) කැපවීම සමඟ.


දැන් අපි මෙම පිළිතුර ආරම්භයේ දී මෙන් ම ය:

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


7
එය කියවා නැත, නමුත් ඔබ විසින් සාදන ලද ලස්සන පින්තූර සඳහා ඡන්දය ප්‍රකාශ කළේය;).
කාලෝ වුඩ්

40

ඔබ නිශ්චිත බැඳීමක් පරීක්ෂා කර බැලූ විට git, ඔබ අවසන් වන්නේ වෙන්වූ ප්‍රධාන තත්වයකය ... එනම්, ඔබේ වැඩ කරන පිටපත තවදුරටත් නම් කරන ලද යොමුවක තත්වය පිළිබිඹු නොකරයි ("ස්වාමියා" වැනි). ගබඩාවේ අතීත තත්වය පරීක්ෂා කිරීම සඳහා මෙය ප්‍රයෝජනවත් වේ, නමුත් ඔබ සැබවින්ම වෙනස්කම් ආපසු හැරවීමට උත්සාහ කරන්නේ නම් ඔබට අවශ්‍ය දේ නොවේ.

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

git checkout myfile

මෙය කිසියම් නොගැලපෙන වෙනස්කම් ඉවතලනු ඇති අතර ඔබගේ වර්තමාන ශාඛාවේ ප්‍රධානියාගේ ඕනෑම තත්වයකට ගොනුව ආපසු හරවනු ඇත. ඔබ දැනටමත් කර ඇති වෙනස්කම් ඉවත දැමීමට ඔබට අවශ්‍ය නම්, ඔබට resetවිධානය භාවිතා කිරීමට අවශ්‍ය විය හැකිය . නිදසුනක් ලෙස, මෙය පසුකාලීන වෙනස්කම් ඉවතලමින් නිධිය පෙර කැපවීමේ තත්වයට යලි සකසනු ඇත:

git reset --hard HEAD^

කෙසේ වෙතත්, ඔබ නිධිය වෙනත් පුද්ගලයින් සමඟ බෙදා ගන්නේ නම්, එය git resetකඩාකප්පල්කාරී විය හැකිය (මන්ද එය නිධිය ඉතිහාසයේ කොටසක් මකා දමයි). ඔබ දැනටමත් වෙනත් පුද්ගලයින් සමඟ වෙනස්කම් බෙදාගෙන ඇත්නම්, ඔබට සාමාන්‍යයෙන් git revertඒ වෙනුවට බැලීමට අවශ්‍ය වන අතර එය “ප්‍රතිදේහයක්” ජනනය කරයි - එනම්, එය නව බැඳීමක් ඇති කරයි.

Git පොතේ වැඩි විස්තර ඇත.


1
@ Ralphtheninja ගේ පිළිතුරෙන් මා පැවසූ පරිදි, git checkout path/to/fooගැටුම් ඇති විය හැකි git checkout some-branchබැවින් git checkout -- path/to/fooමෙම ගැටුම් මඟහරවා ගැනීම වඩා හොඳය .
ඩියාගෝ ලාගෝ

24

"වෙන්වූ හිස් තත්වය" ඔබ තාවකාලික ශාඛාවක් මත ඇති බැවින්, ඔබ භාවිතා git checkout -කළ අවසන් ශාඛාව මතට ඔබව යොදවන්න.


1
ප්‍රවේශම් වන්න, ඔබ වෙන්වූ ප්‍රධාන තත්වයේ සිටියදී ඔබ කළ ඕනෑම ක්‍රියාවක් ඔබ ලිහිල් කරනු ඇත.
අජක් 6

J අජාක් 6 ඔබට එම කැපවීම් සැබවින්ම අහිමි නොවේ. ඒවා තවමත් ලබා git reflogගත හැකි අතර ඒවා නව ශාඛාවකට හෝ git cherry-pickපවතින ශාඛාවකට ගෙන යා හැකිය . මෙම ප්‍රශ්නය බලන්න .
ටැනියස්

7

පිලිප් ගර්බර්ගේ පිළිතුර තවදුරටත් පැහැදිලි කිරීම සඳහා, මෙන්න:

git cherry-pick

මීට පෙර cherry-pick, git checkout masterමෙම නඩුවේ අවශ්ය වේ. තව දුරටත්, එය අවශ්‍ය වන්නේ commitin සමඟ පමණි detached head.


5

අතිරේක

ඔබ නැවත පැමිණීමට කැමති ශාඛාව ඔබ විසින් අවසන් වරට සිදුකරන ලද පිටවීම නම්, ඔබට සරලව භාවිතා කළ හැකිය checkout @{-1}. මෙය ඔබව ඔබගේ පෙර පිටවීම වෙත ගෙන යනු ඇත.

තවද, ඔබට මෙම විධානය අන්වර්ථ කළ හැකිය, උදාහරණයක් ලෙස, git global --config alias.prevඑවිට ඔබට git prevපෙර පිටවීම වෙත ටොගල් කිරීමට ටයිප් කළ යුතුය .


4

ඔබ බොහෝ විට එසේ කර git reset --hard origin/your-branchඇත.

සාධාරණ වීමට උත්සාහ කරන්න git checkout your-branch


3

“වෙන්වූ හිස” තුළ සිටීම යනු HEAD යන්නෙන් නම් නොකල නිශ්චිත බැඳීමක් (නම් කරන ලද ශාඛාවකට ප්‍රතිවිරුද්ධ ලෙස) (cf: https://git-scm.com/docs/git-checkout කොටස වෙන්වූ හිස )

ගැටළුව විසඳීම සඳහා, ඔබට අවශ්‍ය වන්නේ කලින් තෝරාගත් ශාඛාව පමණි

git checkout @{-1}


2

Git මට කිව්වා ඒක කරන්නේ කොහොමද කියලා.

ඔබ ටයිප් කළේ නම්:

git checkout <some-commit_number>

තත්වය සුරකින්න

git add .
git commit -m "some message"

ඉන්පසු:

 git push origin HEAD:<name-of-remote-branch>

2

ඔබ වෙන්වූ හිස තත්වයක සිටින විට සහ නව ලිපිගොනු නිර්මාණය කරන විට, පළමුව මෙම නව ගොනු දර්ශකයට එකතු කර ඇති බවට වග බලා ගන්න, උදාහරණයක් ලෙස:

git add .

නමුත් ඔබ දැනට පවතින ලිපිගොනු පමණක් වෙනස් කර හෝ මකා දමා ඇත්නම්, ඔබට (-a) එකතු කර පණිවුඩයක් (-m) සමඟ එකවරම කළ හැකිය:

git commit -a -m "my adjustment message"

එවිට ඔබට ඔබගේ වර්තමාන තත්වය සමඟ නව ශාඛාවක් නිර්මාණය කළ හැකිය:

git checkout -b new_branch_name

ඔබට නව ශාඛාවක් ඇති අතර ඔබගේ සියලු ගැලපීම් එම නව ශාඛාවේ ඇත. එවිට ඔබට දුරස්ථ හා / හෝ පිටවීම / අදින්න / ඒකාබද්ධ කිරීම දිගටම කරගෙන යා හැකිය.


2

වෙන්වූ හිස යන්නෙන් අදහස් වන්නේ ඔබ ඔබේ ශාඛාව නිසියාකාරව පරික්ෂා කර නොමැති බව හෝ ඔබ එක කැපවීමක් පරීක්ෂා කර ඇති බවයි.

ඔබ එවැනි ප්රශ්නයක් මතු වුවහොත් ඉන් පළමු මැට්ටෙක් ඔබ ඔබේ වෙනස්කම් නැති කර කරන පිණිස, ඔබේ දේශීය වෙනස්කම්.

ඊට පසු ... විධානය භාවිතා කර ඔබේ අපේක්ෂිත ශාඛාව පරීක්ෂා කරන්න:

ඔබට MyOriginalBranch ශාඛාව අවශ්‍ය යැයි කියමු:

git checkout -b someName origin / MyOriginalBranch


1

මට මගේ වෙනස්කම් එසේ තබා ගැනීමට අවශ්‍ය විය, මම මෙය නිවැරදි කරමි ...

git add .
git commit -m "Title" -m "Description"
(so i have a commit now example: 123abc)
git checkout YOURCURRENTBRANCH
git merge 123abc
git push TOYOURCURRENTBRANCH

ඒක මට වැඩක්


1

සාමාන්යයෙන් HEADශාඛාවකට යොමු කරයි. එය ශාඛාවකට යොමු නොවන විට එය කැපකිරීමේ හැෂ් එකකට යොමු කරන 69e51විට එයින් අදහස් වන්නේ ඔබට වෙන්වූ හෙඩ් එකක් ඇති බවයි. ගැටළුව විසඳීම සඳහා ඔබ එය ශාඛා දෙකක් පෙන්වා දිය යුතුය. එය නිවැරදි කිරීමට ඔබට කරුණු දෙකක් කළ හැකිය.

  1. git checkout other_branch // ඔබට එම කැපවීමේ කේතය අවශ්‍ය වූ විට කළ නොහැක hash
  2. නව ශාඛාවක් සාදන්න සහ අලුතින් සාදන ලද ශාඛාවට බැඳීම් හෑෂ් යොමු කරන්න.

හෙඩ් ශාඛාවකට යොමු විය යුතුය, කැපවීමේ හැෂ් එකක් රන් රීතිය නොවේ.


මේ නිසාම මට මෙම දෝෂය ඇතිවිය. මම සංශෝධනයකට ගොස් නැවත ශාඛාව වෙත පරීක්ෂා කිරීම වෙනුවට වත්මන් / නවතම සංශෝධනය වෙත නැවත පරීක්ෂා කර බැලුවෙමි. උදව්වට ස්තූතියි.
රාහුල් තාකූර්

0
git pull origin master

මා වෙනුවෙන් වැඩ කළා. එය හුදෙක් දුරස්ථ හා ශාඛා නාමයන් පැහැදිලිව ලබා දීම පමණි.


0

මගේ නඩුවේදී, මම දුවන git statusඅතර මගේ වැඩ කරන නාමාවලියෙහි සොයා නොගත් ලිපිගොනු කිහිපයක් ඇති බව මම දුටුවෙමි.

මට සිදු කිරීමට අවශ්‍ය වූ ප්‍රතිප්‍රහාරය ක්‍රියාත්මක කිරීම සඳහා මට ඒවා පිරිසිදු කිරීමට සිදු විය (මට ඒවා අවශ්‍ය නොවූ බැවින්).


0

මෙය මට වැඩ කරයි, එය වෙන්වූ හිස සඳහා නව ශාඛාවක් පවරනු ඇත:

git checkout new_branch_name detached_head_garbage_name


0

වෙන්වූ HEAD යන්නෙන් අදහස් වන්නේ ඔබ දැනට කිසිදු ශාඛාවක නොමැති බවයි. ඔබගේ වර්තමාන වෙනස්කම් පවත්වා නව ශාඛාවක් නිර්මාණය කිරීමට ඔබට අවශ්‍ය නම්, ඔබ කරන්නේ මෙයයි:

git commit -m "your commit message"
git checkout -b new_branch

පසුව, ඔබට මෙම නව ශාඛාව වෙනත් ශාඛා සමඟ ඒකාබද්ධ කිරීමට අවශ්‍ය විය හැකිය. Git "බල්ලෙක්" විධානය සැමවිටම ප්‍රයෝජනවත් වේ :

git log --all --decorate --oneline --graph
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.