සරලව කිවහොත්, ඔබ කිසිදු අන්තර්ජාල සම්බන්ධතාවයක් නොමැතිව ගුවන් යානයකට නැගීමට සූදානම් නම් ... පිටත්ව යාමට පෙර ඔබට කළ හැකිය git fetch origin <master>
. එය ඔබගේ පරිගණකයට සියලු වෙනස්කම් ගෙන එනු ඇත, නමුත් එය ඔබේ ප්රාදේශීය සංවර්ධනයෙන් / වැඩබිමෙන් වෙන්ව තබයි.
ගුවන් යානයෙන්, ඔබට ඔබේ දේශීය වැඩබිමෙහි වෙනස්කම් සිදු කළ හැකි අතර පසුව ඔබ ලබාගත් දේ සමඟ එය ඒකාබද්ධ කර අන්තර්ජාලයට සම්බන්ධ නොවී ඒකාබද්ධ වීමේ ගැටුම් නිරාකරණය කළ හැකිය. යමෙකු දුරස්ථ ගබඩාවට නව පරස්පර වෙනස්කම් සිදු නොකළේ නම් ඔබ ගමනාන්තයට පැමිණි පසු ඔබ කළ යුතු දේ git push origin <branch>
සහ කෝපි ලබා ගන්න.
මෙම පුදුමාකාර ඇට්ලේෂියන් නිබන්ධනයෙන් :
එම git fetch
විධානය බාගත කිරීම් අනාචාරයේ, ගොනු, සහ ඔබේ දේශීය ගබඩාව බවට දුරස්ථ ගබඩාව සිට ආශ්රේයන්.
ලබා ගැනීම යනු අනෙක් සියල්ලන්ම වැඩ කර ඇති දේ බැලීමට ඔබට අවශ්ය වූ විට ඔබ කරන දෙයයි . එය SVN යාවත්කාලීනයට සමානය, එය මධ්යම ඉතිහාසය ප්රගතියක් ලබා ඇති ආකාරය බැලීමට ඔබට ඉඩ සලසයි, නමුත් වෙනස්කම් ඇත්ත වශයෙන්ම ඔබේ ගබඩාවට ඒකාබද්ධ කිරීමට එය බල නොකරයි. පවත්නා දේශීය අන්තර්ගතයෙන් ලබාගත් අන්තර්ගතයන් Git හුදකලා කරයි , එය
ඔබගේ ප්රාදේශීය සංවර්ධන කටයුතු කෙරෙහි කිසිදු බලපෑමක් ඇති නොකරයි . ලබාගත් අන්තර්ගතය git checkout
විධානය භාවිතා කර පැහැදිලිව පරීක්ෂා කළ යුතුය . ඔබගේ දේශීය ගබඩාව සමඟ ඒකාබද්ධ කිරීමට පෙර කොමිස් සමාලෝචනය කිරීමට මෙය ආරක්ෂිත ක්රමයක් ලබා දෙයි.
දුරස්ථ ගබඩාවකින් අන්තර්ගතය බාගත කිරීමේදී, git pull
සහ git fetch
කාර්යය ඉටු කිරීම සඳහා විධාන තිබේ. git fetch
විධාන දෙකේ 'ආරක්ෂිත' අනුවාදය ඔබට සලකා බැලිය හැකිය
. එය දුරස්ථ අන්තර්ගතය බාගත කරනු ඇත, නමුත් ඔබේ දේශීය ගබඩාවේ වැඩ කරන තත්ත්වය යාවත්කාලීන නොකොට, ඔබගේ වර්තමාන කාර්යය එලෙසම ඉතිරි වේ. git pull
වඩාත් ආක්රමණශීලී විකල්පය නම්, එය සක්රීය දේශීය ශාඛාව සඳහා දුරස්ථ අන්තර්ගතය බාගත git merge
කර නව දුරස්ථ අන්තර්ගතය සඳහා ඒකාබද්ධ කිරීමේ බැඳීමක් ඇති කිරීමට වහාම ක්රියාත්මක වේ. ඔබ සතුව ප්රගතියේ වෙනස්කම් තිබේ නම් මෙය ගැටුම් ඇති කරන අතර ඒකාබද්ධ ගැටුම් නිරාකරණ ප්රවාහය ආරම්භ කරයි.
සමග git pull
:
- ඔබට හුදෙකලා වීමක් ලැබෙන්නේ නැත.
- එය ඔබේ ප්රාදේශීය සංවර්ධනයට බලපායි.
- එය පැහැදිලිව පරීක්ෂා කිරීම අවශ්ය නොවේ. එය ව්යංගයෙන් අ
git merge
.
- එය මූලික වශයෙන් ආරක්ෂිත නොවේ. එය ආක්රමණශීලී ය.
git fetch
එය ඔබට පමණක් බලපාන තැන මෙන් නොව .git/refs/remotes
, git අදින්න ඔබගේ සහ දෙකටම බලපායි.git/refs/remotes
.git/refs/heads/
හ්ම් ... ඉතින් මම වැඩ කරන පිටපත යාවත්කාලීන නොකරන්නේ නම්, මම git fetch
වෙනස්කම් කරන්නේ කොහේද? Git ලබා ගැනීම නව කොමිස් ගබඩා කරන්නේ කොහෙන්ද?
නියම ප්රශ්නය. එය ඔබගේ වැඩ කරන පිටපතෙන් කොතැනක හෝ හුදෙකලා වේ. නමුත් නැවතත් කොහෙද? අපි සොයා බලමු.
ඔබගේ ව්යාපෘති නාමාවලියෙහි (එනම්, ඔබ ඔබේ git
විධානයන් කරන තැන) කරන්න:
ls
. මෙය ගොනු සහ නාමාවලි පෙන්වනු ඇත. කිසිවක් සිසිල් නැත, මම දනිමි.
දැන් කරන්න ls -a
. මෙය තිත් ලිපිගොනු පෙන්වනු ඇත , එනම්, .
ඔබ සමඟ ආරම්භ වන ලිපිගොනු පසුව නාමාවලියක් දැකගත හැකිය : .git
.
- කරන්න
cd .git
. මෙය පැහැදිලිවම ඔබගේ නාමාවලිය වෙනස් කරනු ඇත.
- දැන් විනෝදජනක කොටස පැමිණේ; කරන්න
ls
. ඔබට නාමාවලි ලැයිස්තුවක් පෙනෙනු ඇත. අපි සොයනවා refs
. කරන්න cd refs
.
- සියලුම නාමාවලිවල ඇති දේ දැකීම සිත්ගන්නා කරුණකි, නමුත් අපි ඒවා දෙකක් කෙරෙහි අවධානය යොමු කරමු.
heads
සහ remotes
. ඔවුන් තුළද cd
පරීක්ෂා කිරීමට භාවිතා කරන්න .
-
git fetch
ඔබ කරන ඕනෑම දෙයක් /.git/refs/remotes
නාමාවලියෙහි අයිතම යාවත්කාලීන කරනු ඇත . එය /.git/refs/heads
නාමාවලියෙහි කිසිවක් යාවත්කාලීන නොකරනු ඇත .
- ඕනෑම අයෙකු
git pull
පළමුව එය කරනු ඇතgit fetch
, /.git/refs/remotes
ඩිරෙක්ටරියේ අයිතම යාවත්කාලීන කර , පසුව ඔබේ දේශීය සමඟ ඒකාබද්ධ කර /.git/refs/heads
ඩිරෙක්ටරිය තුළ හිස වෙනස් කරයි .
ඉතා හොඳ සම්බන්ධිත පිළිතුරක් ද 'git fetch' ස්ථානයෙන් සොයාගත හැකිය. .
එසේම, Git ශාඛා නම් කිරීමේ සම්මුති තනතුරෙන් "කප්පාදු අංකනය" සොයා බලන්න . Git විවිධ ඩිරෙක්ටරි වල දේවල් ස්ථානගත කරන්නේ කෙසේද යන්න වඩා හොඳින් තේරුම් ගැනීමට එය ඔබට උපකාරී වේ.
සැබෑ වෙනස බැලීමට
කරන්න:
git fetch origin master
git checkout master
දුරස්ථ මාස්ටර් යාවත්කාලීන කළේ නම් ඔබට මෙවැනි පණිවිඩයක් ලැබෙනු ඇත:
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
ඔබ එසේ නොකළේ නම් fetch
සහ git checkout master
කොමිස් 2 ක් එකතු කර ඇති බව ඔබේ දේශීය ගිටාරය නොදනී. එය මෙසේ කියනු ඇත:
Already on 'master'
Your branch is up to date with 'origin/master'.
නමුත් එය යල් පැන ගිය හා වැරදිය. එයට හේතුව git ඔබට දන්නා දේ මත පදනම්ව ප්රතිපෝෂණය ලබා දෙන බැවිනි. එය තවමත් පහතට බැස නැති නව කොමිස් ගැන නොසලකා හැරේ ...
දේශීයව ශාඛාවේ වැඩ කරන අතරතුර දුරස්ථව සිදුකරන ලද නව වෙනස්කම් දැකීමට ක්රමයක් තිබේද?
සමහර IDEs (උදා: Xcode) සුපිරි ස්මාර්ට් වන අතර a හි ප්රති result ලය භාවිතා කරන git fetch
අතර ඔබේ වර්තමාන වැඩකරන ශාඛාවේ දුරස්ථ ශාඛාවේ වෙනස් කර ඇති කේත රේඛා විවරණය කළ හැකිය. එම රේඛාව දේශීය වෙනස්වීම් සහ දුරස්ථ ශාඛා දෙකෙන්ම වෙනස් කර ඇත්නම්, එම රේඛාව රතු පැහැයෙන් විවරණය වේ. මෙය ඒකාබද්ධ කිරීමේ ගැටුමක් නොවේ. එය විභව ඒකාබද්ධ කිරීමේ ගැටුමකි. git pull
දුරස්ථ ශාඛාවෙන් සිදු කිරීමට පෙර අනාගත ඒකාබද්ධ කිරීමේ ගැටුම නිරාකරණය කිරීමට ඔබට භාවිතා කළ හැකි හෙඩ්සප් එකකි .
විනෝදජනක ඉඟිය:
ඔබ දුරස්ථ ශාඛාවක් ලබා ගත්තේ නම් උදා:
git fetch origin feature/123
එවිට මෙය ඔබගේ දුරස්ථ නාමාවලියට යයි. එය තවමත් ඔබේ දේශීය නාමාවලියට ලබා ගත නොහැක. කෙසේ වෙතත්, එය ඔබගේ දුරස්ථ ශාඛාවට DWIM විසින් ඔබගේ පිටවීම සරල කරයි (මා අදහස් කරන දේ කරන්න):
git checkout feature/123
ඔබට තවදුරටත් කිරීමට අවශ්ය නැත:
git checkout -b feature/123 origin/feature/123
වැඩි විස්තර සඳහා මෙහි කියවන්න