දේශීය ලිපිගොනු නැවත ලිවීමට “git pull” බල කරන්නේ කෙසේද?


7194

දේශීය ලිපිගොනු නැවත ලිවීමට බල කරන්නේ කෙසේද git pull?

තත්වය පහත දැක්වේ:

  • කණ්ඩායම් සාමාජිකයෙකු අප වැඩ කරන වෙබ් අඩවියක් සඳහා සැකිලි වෙනස් කරයි
  • ඔවුන් පින්තූර නාමාවලියට සමහර පින්තූර එකතු කරයි (නමුත් ඒවා ප්‍රභව පාලනය යටතේ එක් කිරීමට අමතක කරයි)
  • ඔවුන් පින්තූර තැපෑලෙන් යවනවා, පසුව මට
  • මම පින්තූර ප්‍රභව පාලනය යටතේ එකතු කර වෙනත් වෙනස්කම් සමඟ GitHub වෙත තල්ලු කරමි
  • ඔවුන්ගේ ලිපිගොනු නැවත ලිවීමට Git අකමැති නිසා ඔවුන්ට GitHub වෙතින් යාවත්කාලීනයන් ඇද ගත නොහැක.

මට ලැබෙන දෝෂය මෙයයි:

දෝෂය: නොකැඩූ වැඩ කරන ගස් ගොනුව 'public / images / icon.gif' ඒකාබද්ධ කිරීමෙන් නැවත ලියනු ලැබේ

ඒවා නැවත ලිවීමට මම Git ට බල කරන්නේ කෙසේද? පුද්ගලයා නිර්මාණකරුවෙකි - සාමාන්‍යයෙන්, මම සියලු ගැටුම් අතින් විසඳා ගනිමි, එබැවින් සේවාදායකයාට ඔවුන්ගේ පරිගණකයේ යාවත්කාලීන කිරීමට අවශ්‍ය නවතම අනුවාදය ඇත.


17
මෙය කියවන ඕනෑම කෙනෙකුට ලිපිගොනු නැතිවිය හැකි යැයි සිතන, මම මෙම ස්ථානයේ සිට ඇති අතර, සබ්ලයිම් ටෙක්ස්ට්හි බෆරය මා බේරාගෙන ඇති බව මට පෙනී ගියේය - මම යමක් වැඩ කරන්නේ නම්, මේ හා සමාන ගැටළුවක් විසඳීමට උත්සාහ කිරීමෙන් හෝ භාවිතා කිරීමෙන් අහම්බෙන් සියල්ල මකන්න. මෙම ප්‍රශ්නයට පිළිතුරක් සහ ලිපිගොනු සබ්ලයිම් හි විවෘත කර තිබේ නම් (එයට හොඳ අවස්ථාවක් තිබේ) එවිට ලිපිගොනු තවමත් පවතිනු ඇත, එතැනම හෝ අහෝසි ඉතිහාසයේ
ටෝනි ලී

64
git reset --hard origin/branch_to_overwrite
ඇට්කින්සන්

1
මූලික වශයෙන්, ආරම්භක පිටවීම -b පසු සංවර්ධනය කිරීමෙන් පමණක් ඉවත් කරන්න. ඔබේ වැඩ කටයුතු කර නැවත ඇතුළට තල්ලු කරන්න.
ldgorman

1
කෙටි පිළිතුර: ශාඛාව මකා දමා නැවත සාදන්න. 1. ශාඛාව මකන්න: git branch <branch> -D2. ගැටුමට පෙර බැඳීමකට යළි පිහිටුවන්න : git reset <commit> --hard3. ශාඛාව නැවත නිර්මාණය කරන්න: git branch <branch>4. සේවාදායකයට ලුහුබැඳීම සකසන්න: git --set-upstream-to=origin/<branch> <branch> 5. Pull: git pull`
නිනෝ ෆිලියු

1
සියලුම සීආර්එල්එෆ් එල්එෆ් අවසානය දක්වා වෙනස් කිරීමට, (පිරිසිදු ආරම්භ කරන්න)git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout .
ක්ලෝයි

Answers:


10049

වැදගත්: ඔබට දේශීය වෙනස්කම් තිබේ නම් ඒවා නැති වී යයි. --hardවිකල්පයක් සහිතව හෝ රහිතව , තල්ලු කර නොමැති ඕනෑම දේශීය කොමිස් නැති වී යයි. [*]

ඔබට Git විසින් නිරීක්ෂණය නොකරන ලද ගොනු තිබේ නම් (උදා: උඩුගත කළ පරිශීලක අන්තර්ගතය), මෙම ලිපිගොනු බලපාන්නේ නැත.


මම හිතන්නේ මෙය නිවැරදි මාර්ගයයි:

git fetch --all

එවිට, ඔබට විකල්ප දෙකක් තිබේ:

git reset --hard origin/master

හෝ ඔබ වෙනත් ශාඛාවක සිටී නම්:

git reset --hard origin/<branch_name>

පැහැදිලි කිරීම:

git fetch කිසිවක් ඒකාබද්ධ කිරීමට හෝ නැවත ප්‍රතිස්ථාපනය කිරීමට උත්සාහ නොකර දුරස්ථ සිට නවතම බාගත කරයි.

ඉන්පසු git resetඔබ ලබාගත් දෙයට ප්‍රධාන ශාඛාව යළි පිහිටුවයි. මෙම --hardවිකල්පය ඔබේ කම්කරු ගසක් සියලු ගොනු ගොනු ගැලපෙන වෙනස්origin/master


වර්තමාන දේශීය කොමිස් නඩත්තු කරන්න

[*] : masterනැවත සැකසීමට පෙර සිට ශාඛාවක් නිර්මාණය කිරීමෙන් වර්තමාන දේශීය කොමිස් නඩත්තු කළ හැකි බව සඳහන් කිරීම වටී :

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

මෙයින් පසු, පැරණි කොමිස් සියල්ලම තබා ඇත new-branch-to-save-current-commits.

අනුමත නොකළ වෙනස්කම්

කෙසේ වෙතත්, අනුමත නොකළ වෙනස්කම් (වේදිකාගත වුවද) නැති වී යයි. ඔබට අවශ්‍ය ඕනෑම දෙයක් තැන්පත් කිරීමට හා කැපවීමට වග බලා ගන්න. ඒ සඳහා ඔබට පහත සඳහන් දෑ ක්‍රියාත්මක කළ හැකිය:

git stash

ඉන්පසු මෙම වෙනස් නොකළ වෙනස්කම් නැවත යෙදීමට:

git stash pop

14
පරිස්සමෙන්! ඔබ සතුව දේශීය නොකල කොමිස් තිබේ නම් මෙය ඔබේ ශාඛාවෙන් ඉවත් කරනු ඇත! මෙම විසඳුම මඟින් සොයා නොගත් ලිපිගොනු ගබඩාවේ නොවෙනස්ව තබා ගනී, නමුත් අනෙක් සියල්ල නැවත ලියයි.
මැතිතිස් පී

479
එය ජනප්‍රිය ප්‍රශ්නයක්, එබැවින් මෙහි ඉහළම අදහස් දැක්වීම පැහැදිලි කිරීමට මම කැමතියි. මෙම පිළිතුරේ විස්තර කර ඇති පරිදි මම විධාන ක්‍රියාත්මක කළ අතර එය සියලුම දේශීය ලිපිගොනු ඉවත් කර නැත. දුරස්ථව ලුහුබැඳ ඇති ලිපිගොනු පමණක් නැවත ලියනු ලැබූ අතර, මෙහි ඇති සෑම දේශීය ගොනුවක්ම ස්පර්ශ නොවීය.
රතු

14
ඔබ දුරස්ථ ශාඛා නම "මාස්ටර්" ට වඩා වෙනස් වූ git reset --hard origin/branch-name
රෙපෝ එකකින් අදින්නේ නම්

97
මෙම ප්‍රශ්නයට සහ පිළිතුරට ඉහළ නැංවීමේ ප්‍රමාණය සැලකිල්ලට ගෙන, git වැනි විධානයක් ඇතුළත් කළ යුතු යැයි මම සිතමිgit pull -f
Sophivorus

7
දෘ reset යළි පිහිටුවීමට පෙර තල්ලු නොකළ කොමිස් නැවත ලබා ගත හැකි අතර git reflog, එමඟින් සියලු කොමිස් ලැයිස්තුගත කර ඇත. ඔබ ඔබේ දේශීය පිටපත භාවිතයෙන් පිරිසිදු කරන තුරු git gcසියල්ල නැති වී යයි
කොයින්.

937

මේක උත්සාහ කරන්න:

git reset --hard HEAD
git pull

එය ඔබට අවශ්‍ය දේ කළ යුතුය.


16
මම මෙය සිදු කර ඇති අතර, නැවත ගබඩාවේ නොමැති සමහර දේශීය ලිපිගොනු තැටියේ ඉතිරිව ඇත.
Piotr Owsiak

26
මෙය නිවැරදි යැයි මම නොසිතමි. ඉහත සඳහන් කරුණු ඒකාබද්ධ කිරීමක් සිදු කරනු ඇත, නමුත් නැවත ලිවීමට නොව, "ඒවා නැවත ලිවීමට git බල කරන්නේ කෙසේද?" මට පිළිතුරක් නැත, මම දැනට එය සොයමින් සිටිමි .. මේ මොහොතේ මම "git checkout BranchWithCodeToKeep" තබා ගැනීමට අවශ්‍ය කේතය සමඟ ශාඛාවට මාරු වී, පසුව "git branch -D BranchToOverwrite" කරන්න, පසුව "git checkout -b BranchToOverwrite". ඒකාබද්ධ කිරීමක් සිදු නොකර ඔබට දැන් ශාඛා විත්කෝඩ් ටෝකීප් වෙතින් ශාඛා ටූ ඕවර්ව්රයිට් ශාඛාවේ නිශ්චිත කේතය ලැබෙනු ඇත.
ෆෙල්බස්

252
'Git pull' භාවිතයෙන් ඒකාබද්ධ කිරීම වෙනුවට, git fetch --all උත්සාහ කර 'git reset --hard origin / master'
ලොයිඩ් මුවර්

5
ඔව්, ලොයිඩ්මූර් විසඳුම මා වෙනුවෙන් වැඩ කළා. අදහස් දැක්වීමකට වඩා පිළිතුරක් වීම සමඟ කළ හැකිය.
මැක්ස් විලියම්ස්

2
මෙමඟින් වත්මන් වෙනස්කම් නැවත ඇද ගන්නා ලද අවසාන ශාඛා නැවත සකස් කරනු ඇත. එවිට git pull නවතම ශාඛාවේ වෙනස්කම් ඒකාබද්ධ කරයි. මේක මට කරන්න ඕන දේම කළා .. ස්තූතියි!
කෝඩ්වර්ස්

460

අවවාදයයි:git clean ඔබගේ සියලු නොකැඩූ ලිපිගොනු / නාමාවලි මකා දමන අතර එය අවලංගු කළ නොහැක.


සමහර විට clean -fඋදව් කරන්නේ නැත. ඔබ විසින් තෝරා නොගත් නාමාවලි තිබේ නම්, -d විකල්පය ද අවශ්‍ය වේ:

# WARNING: this can't be undone!

git reset --hard HEAD
git clean -f -d
git pull

අවවාදයයි: git clean ඔබගේ සියලු නොකැඩූ ලිපිගොනු / නාමාවලි මකා දමන අතර එය අවලංගු කළ නොහැක.

පළමුව -n( --dry-run) ධජය භාවිතා කිරීම සලකා බලන්න . කිසිවක් මකා නොදමමින් මකා දැමිය යුතු දේ මෙය ඔබට පෙන්වයි:

git clean -n -f -d

උදාහරණ ප්‍රතිදානය:

Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...

33
නියමයි ... මෙය මගේ ඩොට්ෆයිල්ස් රෙපෝවට එරෙහිව ධාවනය කරන්න ... මගේ නිවාස නාමාවලියෙහි. මට එහි වැදගත් කිසිවක් නොතිබීම සතුටක් ...
ලෝරි

7
මම හිතන්නේ සිද්ධි විස්තරයෙන් පැහැදිලි වන්නේ ඔහුට අන්තර්ගතය ඉවත දැමීමට අවශ්‍ය නැති බවයි. ඔහුට අවශ්‍ය වන්නේ ලිපිගොනු නැවත ලිවීම නතර කිරීම ය. A ලෝරි, මෙය ඔබට සිදු නොවිය යුතුය. අවාසනාවට මිනිසුන් සිද්ධි විස්තරයේ සාරය වැරදියට කියවා ඇති බව පෙනේ - මගේ යෝජනාව බලන්න.
හෙජ්ජෝග්

19
අවසාන වශයෙන් . සෑම දෙයක්ම පිරිසිදු කිරීමට අපොහොසත් වූ විට git clean -f -d පහසුය.
earthmeLon

7
@crizCraig ඒවා එකතු නොකළහොත්.gitignore
ලේ ගැලීමේ ඇඟිලි

5
@earthmeLon, ඒ සඳහා ඔබට අවශ්‍ය විය හැකිය git clean -dfx. මෙම -xනොසලකා හැරීම් .gitignore. සාමාන්‍යයෙන් ඔබේ නිමැවුම් නිෂ්පාදන .gitignore හි ඇත.
පෝල් ඩ්‍රැපර්

384

හෙජ්ජෝග් වගේ මමත් පිළිතුරු භයානකයි. නමුත් හෙජ්ජෝග්ගේ පිළිතුර වඩා හොඳ විය හැකි නමුත්, එය හැකි තරම් අලංකාර යැයි මම නොසිතමි. මෙය කිරීමට මා සොයාගත් ක්‍රමය නම් අර්ථ දැක්වීමේ උපාය මාර්ගයක් සමඟ "ලබා ගැනීම" සහ "ඒකාබද්ධ කිරීම" භාවිතා කිරීමයි. එමඟින් ඔබ විසින් නැවත ලිවීමට බල කිරීමට උත්සාහ කරන ලිපිගොනු වලින් එකක් නොවන තාක් කල් ඔබේ දේශීය වෙනස්කම් ආරක්ෂා වනු ඇත.

පළමුව ඔබේ වෙනස්කම් වෙනුවෙන් කැපවීමක් කරන්න

 git add *
 git commit -a -m "local file server commit message"

ඉන්පසු වෙනස්කම් ලබාගෙන ගැටුමක් ඇත්නම් නැවත ලියන්න

 git fetch origin master
 git merge -s recursive -X theirs origin/master

"-X" යනු විකල්ප නාමයක් වන අතර "ඔවුන්ගේ" යනු එම විකල්පයේ වටිනාකමයි. ගැටුමක් ඇත්නම් "ඔබගේ" වෙනස්කම් වෙනුවට "ඔවුන්ගේ" වෙනස්කම් භාවිතා කිරීමට ඔබ තෝරා ගනී.


56
මම මෙතෙක් දුටු හොඳම පිළිතුර මෙයයි. මම එය උත්සාහ කර නැත, නමුත් වෙනත් පිළිතුරු මෙන් නොව, මෙය ඔබගේ සියලු නොකැඩූ ලිපිගොනු නිරුවත් කිරීමට උත්සාහ නොකරයි, එය පැහැදිලි හේතු නිසා ඉතා භයානක ය.
හියුස්

5
ඩිටෝ - මෙය ඉතා විශාල ඒකාබද්ධ කිරීමක් (GitHub pull request) කරන විට මට වැඩ කළ අතර එහිදී මා සතුව තිබූ සියල්ලට වඩා ඒ සියල්ල පිළිගැනීමට මට අවශ්‍ය විය. හොඳ පිළිතුරක්! මගේ නඩුවේ අවසාන විධාන දෙක වූයේ: 1) get fetch other-repo; 2)git merge -s recursive -X theirs other-repo/master
quux00

2
මෙය නිධිය ලිපිගොනු සමඟ ඇති ගැටුම් නැවත ලියනු ඇති අතර ඔබේ දේශීය ඒවා නොවේ, හරිද?
නේතන් එෆ්.

2
හොඳම පිළිතුර. පිළිගත් ඉහළම පිළිතුර මගේ නඩුවේදී වෙන්වූ හිස මත තබා ඇත. මම නැවත දේශීය මාස්ටර් ශාඛාවට මාරු වී දිව්වාgit merge -X theirs origin/master
පීටර්ගස්

2
මෙම (විශිෂ්ට) පිළිතුරේ ඇති ගැටළුව නම්, එය සියලුම දේශීය ලිපිගොනු එකතු කරන අතර සමහර විට ඔබට අවශ්‍ය දේ නොවිය හැකිය. මඟ හැරුණු විශේෂිත ගොනු එක් කිරීමට ඔබට අවශ්‍ය විය හැකිය. නමුත් එහි ඇති හොඳම දේ නම්, ඔහු කළ යුතුව තිබූ දේ කිරීමට එය ඔහුට ලැබීමයි - ඒවා දේශීයව එක් කරන්න. -X ඔවුන්ගේ උපායමාර්ගය ඔබට බොහෝ විට අවශ්‍ය නොවනු ඇත, මන්ද ඒවා එකම රූපයකි. ඇත්ත වශයෙන්ම, මම යෝජනා කරන්නේ මුලින් එය අත්හරින්න, කිසියම් විෂමතාවයක් ඇත්දැයි සොයා බැලීමට සහ ඒවා තිබේ නම් එය එකතු කරන්න, 'ඔවුන්ගේ' සෑම විටම නිවැරදි තේරීම බව සමාලෝචනය කිරීමෙන් පසුව. ඒත් එක්කම මම ව්‍යාකූලයි.
බොබ් කර්න්ස්

279

කරනවා වෙනුවට:

git fetch --all
git reset --hard origin/master

මම පහත සඳහන් දේ කිරීමට උපදෙස් දෙමි:

git fetch origin master
git reset --hard origin/master

ඔබ මූලාරම්භය / ප්‍රධාන ශාඛාව වෙත යළි පිහිටුවීමට යන්නේ නම් සියලු දුරස්ථ හා ශාඛා ලබා ගැනීමට අවශ්‍ය නොවේද?


3
ඔබේ පිළිතුර ඔබේ නියෝජිතයාට අවශ්‍ය දේ පමණි. මම අහන්න ඕන, මෙයත් සොයා නොගත් සියලුම ලිපිගොනු ඉවත් කරයිද?
නිකොලස් ඩි ජේ

5
ඔව්, මගේ නියෝජිතයින් බොහෝමයක් මෙතැන් සිට පැමිණේ :) මෙය හඳුනා නොගත් සියලුම ගොනු ඉවත් කරනු ඇත. මට අමතක වූ දෙයක් හා දින 2 කට පෙර වේදනාකාරී ලෙස මතක් විය ...
ජොහැන්නෙක්

1
මෙම අනෙක් පිළිතුර පිළිබඳ අදහස් බලන්න: stackoverflow.com/a/8888015/2151700
ජොහැන්නෙක්

මෙය මගේ සොයා නොගත් ලිපිගොනු ඉවත් කළේ නැත; ඇත්තෙන්ම මම බලාපොරොත්තු වන්නේ එයයි. එය සමහර අයට මිස අන් අයට නොවීමට හේතුවක් තිබේද?
arichards

හඳුනා නොගත් ලිපිගොනු git reset මගින් බලපාන්නේ නැත. ඒවා ඉවත් කිරීමට ඔබට අවශ්‍ය නම්, git add .පළමුව, පෙර කරන්නgit reset --hard
ජොහැන්නෙක්

131

පළමුවෙන්ම කළ හැකි හොඳම ක්‍රමය මෙය බව පෙනේ:

git clean

හඳුනා නොගත් සියලුම ලිපිගොනු මකා දමා සුපුරුදු පරිදි ඉදිරියට යන්න git pull...


4
එකම ගැටළුව විසඳීම සඳහා මම "git clean" භාවිතා කිරීමට උත්සාහ කළ නමුත් එය එය විසඳුවේ නැත. git status පවසන්නේ "ඔබේ ශාඛාව සහ 'සම්භවය / ස්වාමියා' පිළිවෙලින් වෙනස් වී ඇති අතර, පිළිවෙලින් 2 සහ 9 එකිනෙකට වෙනස් බැඳීම් ඇත." git pull ඔබට ඉහත ඇති දේට සමාන දෙයක් පවසයි.
වහල්භාවය

43
git clean යනු තරමක් නොපැහැදිලි මෙවලමක් වන අතර ඔබට තබා ගැනීමට අවශ්‍ය විය හැකි බොහෝ දේ ඉවත දැමිය හැකිය. ඇදීම සාර්ථක වන තුරු git පැමිණිලි කරන ගොනු ඉවත් කිරීමට හෝ නැවත නම් කිරීමට වඩා හොඳය.
නීල් මේයූ

2
මෙය පොදුවේ ක්‍රියාත්මක වේ යැයි මම නොසිතමි. බලහත්කාරයෙන් git අදින්න හරහා git clone දුරස්ථව කිරීමට ක්‍රමයක් නැද්ද?
mattick

10
th මාතික්:git fetch origin && git reset --hard origin/master
ඇරෝමාස්ටර්

3
වන git cleanමෙහි හොඳම පිළිතුර? ලිපිගොනු ඉවත් කිරීම අනිවාර්යයෙන්ම OP ට අවශ්‍ය දේ නොවන බව පෙනේ. ඔවුන් ඉල්ලා සිටියේ 'දේශීය ලිපිගොනු නැවත ලිවීම' මකාදැමීම නොවේ.
ජෝන් ඇලන්

111

අවවාදයයි, මෙය කිරීමෙන් ඔබේ gitignore ගොනුවේ කිසියම් ඩිරෙක්ටරියක් / * ඇතුළත් කිරීම් තිබේ නම් එය ස්ථිරවම මකා දැමෙනු ඇත.

සමහර පිළිතුරු භයානක බව පෙනේ. ඩේවිඩ් අව්සජානිෂ්විලිගේ යෝජනාව අනුගමනය කිරීමෙන් ලෝරිට සිදු වූ දෙය අර්ථයෙන් භයානක ය.

ඒ වෙනුවට (git> v1.7.6):

git stash --include-untracked
git pull

පසුව ඔබට තොග ඉතිහාසය පිරිසිදු කළ හැකිය.

අතින්, එකින් එක:

$ git stash list
stash@{0}: WIP on <branch>: ...
stash@{1}: WIP on <branch>: ...

$ git stash drop stash@{0}
$ git stash drop stash@{1}

කුරිරු, සියල්ල එකවර:

$ git stash clear

ඇත්ත වශයෙන්ම ඔබ තැන්පත් කළ දේ වෙත ආපසු යාමට ඔබට අවශ්‍ය නම්:

$ git stash list
...
$ git stash apply stash@{5}

2
නෑ මම එහෙම හිතන්නේ නැහැ. ගබඩා කිරීම මඟින් නොකියවූ ලිපිගොනු ඉවතට ගෙන යයි. ඉහත දැක්වෙන්නේ git ලුහුබැඳ නොයන ලිපිගොනු චලනය කිරීමයි. මෙය දුරස්ථයට එකතු කර ඇති ගොනු, තවමත් ඔබේ යන්ත්‍රයට ඇදගෙන නැති නමුත් ඔබ විසින් නිර්මාණය කර ඇති (!) - පහළට ඇද දැමීම වළක්වයි. සියල්ල ඉවත් නොකළ වැඩ විනාශ නොකර. තේරුමක් ඇති බලාපොරොත්තුව?
හෙජ්ජෝග්

3
ඔබට 1.7.6 නොමැති නම්, ඔබේ මුළු ගබඩාව --include-untrackedතාවකාලිකව අනුකරණය කිරීමෙන් ඔබට අනුකරණය කළ හැකිය git add, වහාම එය ගබඩා කරන්න.
nategood

3
මම හෙජ්ජෝග් සමඟ එකඟ වෙමි. ඔබ මෙහි ජනප්‍රිය පිළිතුරු කරන්නේ නම්, ඔබට අහිමි වීමට අවශ්‍ය නැති බොහෝ දේ ඔබ නොදැනුවත්වම මරා දමා ඇති බව ඔබ සොයා ගනු ඇත.
ගාඩියස්

1
මා සතුව වෙනත් සොයා නොගත් ලිපිගොනු තිබේ - ඒකාබද්ධ කිරීම / අදින්න නැවත ලිවීමට අවශ්‍ය වූ නිසා, මෙම විසඳුම වඩාත් හොඳින් ක්‍රියාත්මක විය. git stash applyඒකාබද්ධ කිරීම දැනටමත් නිර්මාණය කර ඇති ඒවා හැරුණු විට (නිවැරදිව) මගේ සියලු නොකැඩූ ලිපිගොනු ආපසු ගෙන එන ලදි: "දැනටමත් පවතී, පිටවීමක් නොමැත." පරිපූර්ණව වැඩ කළා.
BigBlueHat

2
මෙය පිරිසිදුම පිළිතුර වන අතර එය පිළිගත් පිළිතුර විය යුතුය. සමහර ටයිප් කිරීම සුරැකීමට ඔබට කෙටි පෝරමය භාවිතා කළ හැකිය : git stash -u.
ccpizza

93

දේශීය වෙනස්කම් ඉවත දැමීමට මෙම විධානය ඔබට ප්‍රයෝජනවත් විය හැකිය:

git checkout <your-branch> -f

ඉන්පසු පිරිසිදු කිරීමක් කරන්න (වැඩ කරන ගසෙන් ඉවත් නොකළ ලිපිගොනු ඉවත් කරයි):

git clean -f

හඳුනා නොගත් ලිපිගොනු වලට අමතරව හඳුනා නොගත් නාමාවලි ඉවත් කිරීමට ඔබට අවශ්‍ය නම්:

git clean -fd

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

3
එම පිළිතුර හරියටම විස්තරයට නොගැලපෙන නමුත්, එය තවමත් කරත්ත ප්‍රතිලාභ සමඟ ස්වයංක්‍රීයව ගැටගැසීමේ කලකිරීමෙන් මාව බේරා ගත්තේය (ස්වයංක්‍රීයව ව්‍යාජ ලෙස සිදුවීම). Git reset --hard HEAD මඟින් ඔබට "නවීකරණය කරන ලද" ගොනු නොමැත, මෙම "-f" ධජ බෙහෙවින් උපකාරී වේ. ගොඩක් ස්තුතියි.
කෙලින්ඩිල්

88

ඒකාබද්ධ කිරීම වෙනුවට git pullමෙය උත්සාහ කරන්න:

git fetch --all

අනුගත:

git reset --hard origin/master.


61

මට වැඩ කළ එකම දෙය නම්:

git reset --hard HEAD~5

මෙය ඔබව කොමිස් පහක් ආපසු ගෙන යනු ඇත

git pull

Git ඒකාබද්ධ කිරීමක් අහෝසි කරන්නේ කෙසේදැයි සොයා බැලීමෙන් මට පෙනී ගියේය .


මගේ ශාඛාව ආරම්භක
ගබඩාවට

හායි, ඇත්ත වශයෙන්ම මෙය උපක්‍රමයක් work aroundනමුත් ඇත්තෙන්ම .ලදායී වේ. සමහර ගැටුම් සිදුවිය හැක්කේ කොමිස් කිහිපයකින් පමණක් වන අතර පසුව කොමිට් 5 ක් ආපසු හැරවීම දුරස්ථ කේත සමඟ ගැටුම් ඇති නොවන බවට වග බලා ගනී.
හොං ලෙ

54

මෙම සියලු විසඳුම්වල ඇති ගැටළුව නම්, ඒවා සියල්ලම ඉතා සංකීර්ණ වීම හෝ ඊටත් වඩා විශාල ගැටළුවක් නම්, ඒවා වෙබ් සේවාදායකයෙන් ඉවත් නොකළ සියලුම ගොනු ඉවත් කිරීමයි. සෑම විටම අවශ්‍ය වින්‍යාස ගොනු පවතින බැවින් අපට අවශ්‍ය නැත. සේවාදායකය මිස Git ගබඩාවේ නොවේ.

අප භාවිතා කරන පිරිසිදුම විසඳුම මෙන්න:

# Fetch the newest code
git fetch

# Delete all files which are being added, so there
# are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
    rm -f -- "$file"
done

# Checkout all files which were locally modified
for file in `git diff --name-status | awk '/^[CDMRTUX]/ {print $2}'`
do
    git checkout -- "$file"
done

# Finally pull all the changes
# (you could merge as well e.g. 'merge origin/master')
git pull
  • පළමු විධානය මඟින් නවතම දත්ත ලබා ගනී.

  • දෙවන විධානය මඟින් ගබඩාවට කිසියම් ලිපිගොනු එකතු කර ඇත්දැයි පරීක්ෂා කර ගැටුම් ඇති කළ හැකි දේශීය ගබඩාවෙන් ඉවත් නොකළ ලිපිගොනු මකා දමයි.

  • තෙවන විධානය මඟින් දේශීයව වෙනස් කරන ලද සියලුම ගොනු පරීක්ෂා කරයි.

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


"Git pull" වෙනුවට "git ඒකාබද්ධ කිරීමේ සම්භවය / මාස්ටර්" අවසාන පේළිය ලෙස (ඔබේ සටහනේ ඔබ පවසන පරිදි) භාවිතා කිරීම වේගවත් වනු ඇත.
ජොෂ්

1
ඔව්, ඇත්ත වශයෙන්ම, git merge origin/masterවේගවත් හා බොහෝ විට ආරක්ෂිත වනු ඇත. මෙම ස්ක්‍රිප්ටයේ ලිපිගොනු ඉවත් කිරීමේදී යමෙකු නව වෙනස්කම් සිදු කළහොත් (එය සිදුවිය නොහැක්කකි, නමුත් හැකි ය), මුළු ඇදීමම අසාර්ථක විය හැකිය. මා pullඑහි තැබීමට ඇති එකම හේතුව යමෙකු මාස්ටර් ශාඛාවේ වැඩ නොකරනු ඇති නමුත් වෙනත් ශාඛාවක් සහ මට අවශ්‍ය වූයේ පිටපත විශ්වීය වීමයි.
ස්ට්‍රහින්ජා කස්ටුඩික්

ඔබ විකල්ප ලිපිගොනු වැනි ලිපිගොනු දේශීයව නිර්මාණය කර ඇත්නම් ඒවා දමන්න .gitignore.
සෙබී

53

පළමුව, සම්මත ක්‍රමය උත්සාහ කරන්න:

git reset HEAD --hard # To remove all not committed changes!
git clean -fd         # To remove all untracked (non-git) files and folders!

අවවාදයයි : ඉහත විධානයන් මඟින් දත්ත / ලිපිගොනු නැතිවීමට හේතු විය හැක්කේ ඔබ ඒවා කර නොමැති නම් පමණි! ඔබට විශ්වාස නැත්නම්, ඔබේ මුළු නිධිය ෆෝල්ඩරයෙන් පළමුව උපස්ථය සාදන්න.

ඉන්පසු එය නැවත අදින්න.

ඉහත උදව් නොකෙරේ නම් සහ ඔබගේ සොයා නොගත් ලිපිගොනු / නාමාවලි ගැන ඔබ තැකීමක් නොකරන්නේ නම් (උපස්ථය පළමුවෙන්ම සාදන්න), පහත සරල පියවර උත්සාහ කරන්න:

cd your_git_repo  # where 'your_git_repo' is your git repository folder
rm -rfv *         # WARNING: only run inside your git repository!
git pull          # pull the sources again

මෙය සියළුම git ගොනු ඉවත් කර ( .git/ඔබ සියලු කොමිස් ඇති තැන හැර), එය නැවත අදින්න.


git reset HEAD --hardසමහර අවස්ථාවල අසමත් විය හැක්කේ ඇයි ?

  1. අභිරුචි නීති .gitattributes file

    තිබීම eol=lf.Gitattributes හි රීතියක් සමහර පෙළ ලිපිගොනු වල CRLF රේඛා-අන්තයන් LF බවට පරිවර්තනය කිරීමෙන් සමහර ගොනු වෙනස් කිරීමට git හේතු විය හැක.

    එය එසේ නම්, ඔබ මෙම CRLF / LF වෙනස්කම් සිදු කළ යුතුය (ඒවා සමාලෝචනය කිරීමෙන් git status), හෝ උත්සාහ කරන්න: git config core.autcrlf falseඒවා තාවකාලිකව නොසලකා හැරීමට.

  2. ගොනු පද්ධතියේ නොහැකියාව

    ඔබ අවසර ලක්‍ෂණ සඳහා සහය නොදක්වන ගොනු පද්ධතියක් භාවිතා කරන විට. උදාහරණයක් ලෙස ඔබට නිධි දෙකක් තිබේ, එකක් ලිනක්ස් / මැක් ( ext3/ hfs+) සහ තවත් එකක් FAT32 / NTFS පදනම් කරගත් ගොනු පද්ධතියේ.

    ඔබ දකින පරිදි, වෙනස් ආකාරයේ ගොනු පද්ධති දෙකක් ඇත, එබැවින් යුනික්ස් අවසරයන්ට සහය නොදක්වන තැනැත්තාට මූලික වශයෙන් එම ආකාරයේ අවසරයන්ට සහය නොදක්වන පද්ධතියේ ගොනු අවසරයන් නැවත සැකසිය නොහැක, එබැවින් --hardඔබ කොතරම් උත්සාහ කළත් git සෑම විටම සමහර "වෙනස්කම්" හඳුනා ගන්න.


47

මටත් ඒ වගේ ප්‍රශ්නයක් තිබුණා. කිසිවෙකු මට මෙම විසඳුම ලබා දුන්නේ නැත, නමුත් එය මට වැඩ කළේය.

මම එය විසඳුවේ:

  1. සියලුම ගොනු මකන්න. .gitනාමාවලිය පමණක් තබන්න .
  2. git reset --hard HEAD
  3. git pull
  4. git push

දැන් එය ක්‍රියාත්මක වේ.


1
මෙහෙත් එහෙමයි. සමහර විට ඉතා දුෂ්කර විසඳුමක් පමණක් ක්‍රියාත්මක වේ, බොහෝ විට සිදුවන්නේ නැවත සකස් කිරීම සහ පිරිසිදු කිරීම පමණක් කෙසේ හෝ ප්‍රමාණවත් නොවේ ...
jdehaan

41

පාරිතෝෂිකය:

පෙර පිළිතුරු වල අදින්න / ලබා ගැනීම / ඒකාබද්ධ කිරීම ගැන කථා කිරීමේදී, සිත්ගන්නාසුළු හා tive ලදායී උපක්‍රමයක් බෙදා ගැනීමට මම කැමතියි,

git pull --rebase

මෙම ඉහත විධානය මගේ Git ජීවිතයේ වඩාත්ම ප්‍රයෝජනවත් විධානය වන අතර එය බොහෝ කාලයක් ඉතිරි කර ඇත.

ඔබගේ නව සේවාදායකය වෙත තල්ලු කිරීමට පෙර, මෙම විධානය උත්සාහ කරන්න, එය නවතම සේවාදායක වෙනස්කම් ස්වයංක්‍රීයව සමමුහුර්ත කරයි (ලබා ගැනීම + ඒකාබද්ධ කිරීම සමඟ) සහ ඔබගේ කැපවීම Git ලොගයේ ඉහළින්ම තබනු ඇත. අතින් අදින්න / ඒකාබද්ධ කිරීම ගැන කරදර විය යුතු නැත.

විස්තර සොයන්න "git pull --rebase" කරන්නේ කුමක්ද? .


3
කෙටි: git pull -r.
kenorb

29

මටත් ඒ හා සමාන ගැටලුවක් තිබුණා. මට මෙය කිරීමට සිදු විය:

git reset --hard HEAD
git clean -f
git pull

6
git cleanප්‍රවේශමෙන් භාවිතා කරන්න
nategood

29

මම වෙනත් පිළිතුරු සාරාංශ කළෙමි. ඔබට git pullදෝෂ නොමැතිව ක්‍රියාත්මක කළ හැකිය :

git fetch --all
git reset --hard origin/master
git reset --hard HEAD
git clean -f -d
git pull

අවවාදයයි : මෙම ස්ක්‍රිප්ට් ඉතා බලවත් බැවින් ඔබගේ වෙනස්කම් ඔබට අහිමි විය හැකිය.


2
මෙය නවීකරණය කරන ලද ලිපිගොනු නැවත ලියනු ඇත (කලින් පරීක්ෂා කර ඇති ලිපිගොනු) සහ එය ඉවත් නොකළ ගොනු ඉවත් කරනු ඇත (කිසි විටෙකත් පරීක්ෂා කර නැති ගොනු). හරියටම මම සොයන දේ, ස්තූතියි!
ස්ටයිෆල්

3
තුන්වන පේළිය git reset --hard HEADඅතිරික්ත විය හැකි යැයි මම සැක කරමි ; මගේ දේශීය මිනිසා පිටුව (2.6.3) පවසන්නේ resetදෙවන පේළියේ git reset --hard origin/master “සියලු ආකාරවලින් HEAD වෙත පෙරනිමි” බවයි.
arichards

2
icarichards මම හිතන්නේ ඔබේ සැකකරු නිවැරදි නමුත් දෙවන පේළිය ක්‍රියා නොකරන්නේ නම් (කිසියම් හේතුවක් නිසා) තුන්වන පේළිය නැවත සැකසීමට හොඳින් ක්‍රියා කරයි. මෙම විසඳුම ප්‍රශස්තිකරණය කිරීම අවශ්‍ය නොවේ. මම වෙනත් පිළිතුරු සාරාංශ කළෙමි. එච්චරයි. ඔබගේ අදහස් දැක්වීමට ස්තූතියි. :)
රොබට් මූන්

28

මගේම සමාන අත්දැකීම් මත පදනම්ව, ඉහත ස්ට්‍රහින්ජා කස්ටුඩික් විසින් ඉදිරිපත් කරන ලද විසඳුම වඩාත්ම හොඳය. අනෙක් අය පෙන්වා දී ඇති පරිදි, දැඩි ලෙස යළි පිහිටුවීම කිරීමෙන් සියල්ල ඉවත් වේ දෘ කිරීමෙන් වින්‍යාසගත ගොනු වැනි ඔබට ඉවත් කිරීමට අවශ්‍ය නොවන බොහෝ දේ ඇතුළත් කළ නොහැකි ගොනු ඉවත් කරනු ඇත. වඩා ආරක්ෂිත වන්නේ, එකතු කිරීමට නියමිත ලිපිගොනු පමණක් ඉවත් කිරීම වන අතර, ඒ සඳහා, යාවත්කාලීන කිරීමට නියමිත දේශීයව වෙනස් කරන ලද ඕනෑම ලිපිගොනු පිරික්සීමට ඔබට අවශ්‍ය වනු ඇත.

එය මතකයේ තබා ගනිමින් මම කුස්ටුඩික්ගේ පිටපත යාවත්කාලීන කළෙමි. මම යතුරු ලියනය ද සවි කළෙමි (මුල් පිටුවේ නැතිවූ).

#/bin/sh

# Fetch the newest code
git fetch

# Delete all files which are being added,
# so there are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
    echo "Deleting untracked file $file..."
    rm -vf "$file"
done

# Checkout all files which have been locally modified
for file in `git diff HEAD..origin/master --name-status | awk '/^M/ {print $2}'`
do
    echo "Checking out modified file $file..."
    git checkout $file
done

# Finally merge all the changes (you could use merge here as well)
git pull

"Git pull" වෙනුවට "git ඒකාබද්ධ කිරීමේ සම්භවය / මාස්ටර්" අවසාන පේළිය ලෙස (ඔබේ සටහනේ ඔබ පවසන පරිදි) භාවිතා කිරීම වේගවත් වනු ඇත.
ජොෂ්

නවීකරණය කරන ලද ලිපිගොනු පරීක්ෂා කිරීම අවශ්‍ය වේ, එබැවින් මෙය 100% වාරයක් ක්‍රියාත්මක වේ. මම මගේ ස්ක්‍රිප්ට් එක බොහෝ කලකට පෙර යාවත්කාලීන කළ නමුත් මෙහි යාවත්කාලීන කිරීමටද අමතක විය. මම එය ඔබට වඩා ටිකක් වෙනස් ලෙස භාවිතා කරමි. එම් පමණක් නොව ඕනෑම ආකාරයක වෙනස් කිරීමක් ඇති ලිපිගොනු මම පරීක්ෂා කරමි, එබැවින් එය සැමවිටම ක්‍රියාත්මක වේ.
ස්ට්‍රහින්ජා කස්ටුඩික්

24

ගැටුම් ඇතිවීමට හේතු දෙකක් ඇති බව මම විශ්වාස කරමි, ඒවා වෙන වෙනම විසඳිය යුතු අතර, මට කිව හැකි තාක් දුරට ඉහත පිළිතුරු කිසිවක් දෙකම සමඟ ගනුදෙනු නොකරයි:

  • හඳුනා නොගත් දේශීය ලිපිගොනු අතින් (ආරක්ෂිත) හෝ වෙනත් පිළිතුරු වල යෝජනා කර ඇති පරිදි මකා දැමිය යුතුය git clean -f -d

  • දුරස්ථ ශාඛාවේ නොමැති දේශීය කොමිස් ද මකා දැමිය යුතුය. මෙය සාක්ෂාත් කර ගැනීම සඳහා ඇති පහසුම ක්‍රමය IMO සමඟ ය: git reset --hard origin/master(ඔබ වැඩ කරන ඕනෑම ශාඛාවකින් 'මාස්ටර්' ආදේශ කර git fetch originපළමුව ක්‍රියාත්මක කරන්න )


22

පහසු ක්‍රමයක් වනුයේ:

git checkout --theirs /path/to/file.extension
git pull origin master

මෙය ඔබගේ දේශීය ගොනුව git මත ඇති ගොනුව සමඟ අභිබවා යනු ඇත


21

මෙහි බොහෝ පිළිතුරු අවධානය යොමු කර ඇති බවක් පෙනේ master ශාඛාව වෙත ; කෙසේ වෙතත්, මම එකම විශේෂාංග ශාඛාවක විවිධ ස්ථාන දෙකක වැඩ කරන අවස්ථා තිබේ. මට අවශ්‍ය වන්නේ එකක ප්‍රතිප්‍රහාරයක් අනෙකා තුළ පිළිබිඹු වන ලෙසයි.

ඒ හා සමාන ප්‍රශ්නයකට ආර්එන්ඒගේ පිළිතුර සහ ටොරෙක්ගේ පිළිතුරේ එකතුවක් මත පදනම්ව , මම මෙය ඉදිරිපත් කර ඇත්තේ විශිෂ්ට ලෙස ය:

git fetch
git reset --hard @{u}

මෙය ශාඛාවකින් ධාවනය කරන්න, එය ඔබගේ ප්‍රාදේශීය ශාඛාව උඩුමහලේ අනුවාදයට පමණක් යළි පිහිටුවනු ඇත.

මෙයද git අන්වර්ථයකට ( git forcepull) හොඳින් දැමිය හැකිය:

git config alias.forcepull "!git fetch ; git reset --hard @{u}"

නැතහොත්, ඔබේ .gitconfigගොනුවේ:

[alias]
  forcepull = "!git fetch ; git reset --hard @{u}"

විනෝද වන්න!


ඔබ කුමන ශාඛාවෙහි සිටියත් එය ක්‍රියාත්මක වන නිසා මෙම පිළිතුර ද හොඳයි!
පත්‍රිකා

19

මට එකම ගැටලුවක් ඇති අතර යම් හේතුවක් නිසා එය පවා git clean -f -dනොකරනු ඇත. යම් හේතුවක් නිසා, ඔබේ ගොනු Git (අ .gitignore ප්රවේශය හරහා, මම උපකල්පනය) විසින් නොසලකා හරිනු ලබයි නම්, එය තවමත් පසුව මෙම මත ලියන්නේ ගැන කරදර කරනවා: ඇයි මෙතන අදින්න , නමුත් පිරිසිදු කැමැත්ත, ඔබ එකතු නම් ඉවත් කරන්නේ -x.


19

වඩා පහසු හා අඩු වේදනාකාරී ක්‍රමයක් ගැන මම දනිමි:

$ git branch -m [branch_to_force_pull] tmp
$ git fetch
$ git checkout [branch_to_force_pull]
$ git branch -D tmp

ඒක තමයි!


18

මම මෙය තනිවම විසඳා ගත්තෙමි:

git checkout -b tmp # "tmp" or pick a better name for your local changes branch
git add -A
git commit -m 'tmp'
git pull
git checkout master # Or whatever branch you were on originally
git pull
git diff tmp

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

git checkout master && git merge tmp

ඊළඟ වතාවට, ඔබට "git stash ශාඛාව" බැලීමෙන් මෙය වඩාත් පිරිසිදු ආකාරයකින් හැසිරවිය හැකි නමුත් පළමු උත්සාහයන් කිහිපය තුළදී තොගය ඔබට කරදරයක් විය හැකි බැවින් විවේචනාත්මක නොවන ව්‍යාපෘතියක පළමු අත්හදා බැලීම කරන්න ...


17

මම වත් අමුතු තත්ත්වය ඇති git cleanහෝ git resetක්රියා. git indexහඳුනා නොගත් සෑම ගොනුවකම පහත දැක්වෙන ස්ක්‍රිප්ට් භාවිතා කිරීමෙන් ගැටුම්කාරී ගොනුව ඉවත් කිරීමට මට සිදුවේ :

git rm [file]

එවිට මට හොඳින් අදින්න පුළුවන්.



14

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

පහත දැක්වෙන අනුවාදය ඔබගේ දේශීය වෙනස්කම් තාවකාලික ශාඛාවකට ( tmp) සිදු කරයි, මුල් ශාඛාව පරීක්ෂා කරයි (මම උපකල්පනය කරන්නේ master) සහ යාවත්කාලීන කිරීම් ඒකාබද්ධ කරයි. ඔබට මෙය කළ හැකිය stash, නමුත් සාමාන්‍යයෙන් ශාඛා / ඒකාබද්ධ කිරීමේ ප්‍රවේශය භාවිතා කිරීම පහසු බව මට පෙනී ගියේය.

git checkout -b tmp
git add *; git commit -am "my temporary files"
git checkout master

git fetch origin master
git merge -s recursive -X theirs origin master

අපි උපකල්පනය එහිදී වෙනත් ගබඩාව කියන්නේ origin master.


13

මෙම විධාන හතර මට වැඩ කරයි.

git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master

මෙම විධානයන් ක්‍රියාත්මක කිරීමෙන් පසු පරීක්ෂා කිරීමට / අදින්න

git pull origin master

මම බොහෝ උත්සාහ කළ නමුත් අවසානයේ මෙම විධානයන් සමඟ සාර්ථක විය.


2
"git branch -D master" ශාඛාව මකන්න. එබැවින් ඒ ගැන සැලකිලිමත් වන්න. මම "git checkout origin / master -b <new branch name>" භාවිතා කිරීමට කැමැත්තක් දක්වන අතර එය නව නමක් සහිත නව ශාඛාවක් නිර්මාණය කරන අතර ඔබට පේළි 3,4 ක් අවශ්‍ය වේ. "Git clean -f" භාවිතා කිරීමට ද නිර්දේශ කෙරේ.
චන්ද් ප්‍රියංකර

13

කරන්න

git fetch origin branchname
git checkout -f origin/branchname // This will overwrite ONLY new included files
git checkout branchname
git merge origin/branchname

එබැවින් ඔබට තබා ගැනීමට අවශ්‍ය ලිපිගොනු හෝ නාමාවලි මකා දැමීම වැනි අනවශ්‍ය අතුරු ආබාධ වළක්වා ගන්න.


12

දර්ශකය සහ හිස නැවත සකසන්න origin/master, නමුත් වැඩ කරන ගස නැවත සකසන්න එපා:

git reset origin/master

මම පෞද්ගලිකව මෙය වඩාත් ප්‍රයෝජනවත් බව සොයා ගත්තා. එය පසුව ඔබේ වැඩ කරන ගස තබා ගන්නා බැවින් ඔබට එය නැවත පරීක්ෂා කළ හැකිය. මගේ ගැටළුව සඳහා, එකතු කරන ලද ලිපිගොනු මකාදැමූ බැවින් එය හිරවී තිබුණි. අමුතුයි, මම දන්නවා.
ජේසන් සෙබ්‍රිං

12

අවශ්‍යතා:

  1. දේශීය වෙනස්කම් නිරීක්ෂණය කරන්න එවිට මෙහි කිසිවෙකුට ඒවා අහිමි නොවේ.
  2. දේශීය නිධිය දුරස්ථ සම්භවයක් සහිත ගබඩාවට ගැලපෙන්න.

විසඳුමක්:

  1. මත්කුඩු ග්රෑම් දේශීය වෙනස්කම්.
  2. බෝගයන්ගේ සැලකිය සමඟ පිරිසිදු කිරීමේ ගොනු හා බහලුම් නොසලකා හරිමින් .gitignore හා වෙහෙස මහන්සි වී යළි පිහිටුවීමේ කිරීමට සම්භවය .

    git stash --include-untracked
    git fetch --all
    git clean -fdx
    git reset --hard origin/master
    
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.