දුරස්ථ මාස්ටර් සමඟ දේශීය ශාඛාව නැවත ප්‍රතිස්ථාපනය කරන්නේ කෙසේද


979

මා සතුව දුරස්ථ ගබඩාවෙන් ප්‍රධාන ශාඛාවකින් ක්ලෝන කරන ලද ව්‍යාපෘතියක් තිබේ remote_repo. මම නව ශාඛාවක් නිර්මාණය කරන අතර මම එම ශාඛාවට කැප වෙමි. අනෙකුත් ක්‍රමලේඛකයින් remote_repoප්‍රධාන ශාඛාවට තල්ලු විය .

මගේ ශාඛාව RB remote_repoමාස්ටර් වෙත නැවත ලබා දීමට මට දැන් අවශ්‍යයි .

මෙය කරන්නේ කෙසේද? පර්යන්තයකට ටයිප් කිරීමට කුමන විධානයන් තිබේද?


15
මට නම් මෙම ප්‍රශ්නය නොපැහැදිලි බැවින් “සමග” යන්නෙන් දෙපැත්තටම ප්‍රතිප්‍රහාර එල්ල විය හැකිය. පිළිතුරු දෙස බැලීමේදී මට පෙනී යන්නේ ඔබේ ශාඛාව දුරස්ථ මාස්ටර් වෙත නැවත ලබා දීම මිස අනෙක් පැත්තෙන් නොවන බවයි. කවුරුහරි පහත පිළිතුරක් අනුගමනය කර ඔවුන්ට අවශ්‍ය දේ ආපසු ලබා ගත හොත් මම එය සඳහන් කරමි.
ග්ලෙන් ලෝරන්ස්

9
Len ග්ලෙන්ලොරන්ස් අදහස් දැක්වීමක් එකතු කරනවාට වඩා මුල් ප්‍රශ්නය සංස්කරණය කිරීම වඩා හොඳ යැයි මම සිතමි. Stackoverflow ද මෙය දිරිමත් කරයි. ඊට අමතරව, RB වෙත මාස්ටර් නැවත ප්‍රතිස්ථාපනය කිරීම කෙසේ හෝ අසාර්ථක වනු ඇත, මන්ද RB රඳා පවතින්නේ ස්වාමියාගේ ඉතිහාසය මත ය.
ඩැනියෙල් කුල්මන්

Answers:


1289

පළමුව නව ස්වාමියා උඩු මහලේ ගබඩාවෙන් ගෙන්වා, ඉන්පසු ඔබේ වැඩ ශාඛාව නැවත ප්‍රතිස්ථාපනය කරන්න:

git fetch origin            # Updates origin/master
git rebase origin/master    # Rebases current branch onto origin/master

යාවත්කාලීන කිරීම : කරුණාකර වඩාත් සංක්ෂිප්ත ක්‍රමයක් සඳහා පෝල් ඩ්‍රැපර්ගේ පිළිතුර බලන්න - මෑත කාලීන Git අනුවාදයන් ඉහත විධානයන් දෙකට සමාන කිරීමට සරල ක්‍රමයක් සපයයි.


17
ඉල්ලූ දේ සැබවින්ම කරන එකම පිළිතුර මෙයයි
kayaker243

5
ay kayaker243 නැත, එය පෝල් ඩ්‍රැපර්ස් පිළිතුරු දෙන ආකාරයටම නමුත් දිගු ස්වරූපයෙන් මම සිතමි.
එරික්

7
පෝල් ඩ්‍රැපර් සිය පිළිතුර ලියා ඇත්තේ කයාකර් 243 ගේ අදහස් දැක්වීමෙන් වසර භාගයකට පමණ පසුවය (සහ මෙම පිළිතුරෙන් වසර දෙකකට පමණ පසු).
ෆ්‍රෙරිච් රාබේ

3
මට පහත දේ ලැබේ: Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.තවත් git pullඑකක් අවශ්‍ය බව පෙනේ . මෙය නිවැරදි ද නැතිනම් මට මෙහි යමක් මග හැරී තිබේද?
දෝෂය

2
@RGC නැහැ, git rebase masterදෙවන අණ (සමාන රැකියා කරන්නේ නැහැ git rebase origin/master) සිට masterසහ origin/masterහොඳින් විවිධ අනාචාරයේ යොමු විය හැක (විශේෂයෙන් පළමු විධාන බව ලබා දී git fetch originවෙනස් විය හැකි, origin/master).
ෆ්‍රෙරිච් රාබේ

847
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]

19
(ෆ්‍රෙරිච්ගේ පිළිතුරට සමානය)
පෝල් ඩ්‍රැපර්

12
මෙය ෆ්‍රෙරිච්ගේ පිළිතුරට වඩා තරමක් වෙනස් නොවේ, මෙය සම්භවයක් ඇති ස්වාමියාගේ සිට දේශීය ස්වාමියා දක්වා වෙනස්කම් සිදු කරනු ඇති අතර, ෆ්‍රෙරිච්ගේ පිළිතුර දේශීය ස්වාමියාට අත නොතබනු ඇත. (pull vs. fetch)
ජිමී හච්

7
නැත, ෆ්‍රෙරිච්ගේ පිළිතුරේ, ප්‍රතිප්‍රහාරය දේශීය ස්වාමියා වෙනස් කරයි. අදින්න --rebase යනු නැවත ලබා ගැනීමක් ලබා ගැනීම හා සමානයි
adhominem

9
FYI ඔබට අන්තර්ක්‍රියාකාරී ප්‍රතිමූර්තියක් කළ හැකියgit pull --rebase=interactive origin master
emmby

14
hadhominem - මම git-pull ප්‍රලේඛනය පරික්ෂා කළ අතර, දේශීය ස්වාමියා වෙනස් කර ඇති බවට කරන ප්‍රකාශයට අනුබල දෙන කිසිවක් මට නොපෙනේ. මම නම් devකර ක්‍රියාත්මක වන ශාඛාවක නම් git pull --rebase origin master, devවෙනස් කිරීමට යන්නේ ශාඛාව පමණි master. මෙම --rebaseඑය කිරීමට උත්සාහ කරන ධජය ප්රලේඛනය රාජ්යයන් rebase the current branch on top of the upstream branch after fetchingදේශීය ෙසොයා ගැනීෙම් ශාඛා, සංශෝධනය ගැන කිසිවක්.
මොනිකා 2331977

253

ඔබේ ශාඛාවේ වෙනස්කම් සිදු කිරීමෙන් පසු, masterඑහි නවතම වෙනස්කම් repo වෙතින් ලබා ගැනීම සඳහා එය ඉවත් කර අදින්න:

git checkout master
git pull origin master

ඉන්පසු ඔබේ ශාඛාව පරීක්ෂා කර ඔබගේ වෙනස්කම් නැවත වෙනස් කරන්න master:

git checkout RB
git rebase master

... හෝ එක් පේළියක අවසාන විධාන දෙක:

git rebase master RB

පසුපසට තල්ලු කිරීමට උත්සාහ කරන විට origin/RB, ඔබට බොහෝ විට දෝෂයක් ලැබෙනු ඇත; ඔබ පමණක් වැඩ කරන්නේ නම් RB, ඔබට තල්ලු කිරීමට බල කළ හැකිය:

git push --force origin RB

... හෝ පහත පරිදි ඔබ සුදුසු පරිදි git වින්‍යාස කර තිබේ නම්:

git push -f

4
මූලාරම්භය / ආර්බී වෙත ආපසු තල්ලු කිරීමට උත්සාහ කරන විට, ඔබට බොහෝ විට දෝෂයක් ලැබෙනු ඇත. ඔබ RB හි වැඩ කරන එකම තැනැත්තා නම්, ඔබට තල්ලු --force සම්භවය RB ලබා ගත හැකිය. මූලාශ්‍රය: stackoverflow.com/questions/8939977/…
ජෝයි බාරුක්

1
ආ .... මට මේක හරියටම තියෙනවා. මගේ "ආර්බී" නිවැරදිව ප්‍රතිනිර්මාණය කර ඇත, නමුත් ප්‍රතිප්‍රහාරයෙන් පසුව එය තල්ලු කිරීමට උත්සාහ කිරීමේදී මට නිමක් නැති දෝෂ ඇතිවේ. තල්ලු - බල සම්භවය RB හැරුණු විට - එය කිරීමට “වඩා හොඳ” (බලහත්කාරයෙන් තොර) ක්‍රමයක් තිබේද? මම මෙහි ඇති අවබෝධය තේරුම් ගැනීමට උත්සාහ කරමි - අසමත් වේ.
Motti Shneor

2
OttMottiShneor නෑ, ලස්සන ක්‍රමයක් නැහැ. වෙනත් අයෙකු මධ්‍ය කාලීනව ශාඛාවට තල්ලු කළහොත් ඔවුන්ගේ වෙනස්කම් නැති වී යනු ඇත! ඔබට git commit ඉතිහාසයට හොඳ වීමට අවශ්‍ය නම්, ඔබ ස්වාමියා ඔබේ ශාඛාවට ඒකාබද්ධ කළ යුතුය, එය ආරක්ෂිතයි (ඔබට git pushනොමැතිව කළ හැකිය -f).
ඩැනියෙල් කුල්මන්

116

සටහන: නැවත ප්‍රතිස්ථාපනය කිරීම පිළිබඳව ඔබට දැනටමත් පුළුල් දැනුමක් තිබේ නම් වේගවත් ප්‍රතිප්‍රහාර සඳහා එක් ලයිනර් එකකට පහළින් භාවිතා කරන්න. විසඳුම: ඔබ ඔබේ වැඩකරන ශාඛාවේ සිටින බවත්, ඒ මත වැඩ කරන එකම පුද්ගලයා ඔබ බවත් උපකල්පනය කරන්න.

git fetch && git rebase origin/master

ඕනෑම ගැටුම් නිරාකරණය කරන්න, ඔබේ කේතය පරීක්ෂා කරන්න, කැපවී නව වෙනස්කම් දුරස්ථ ශාඛාවට තල්ලු කරන්න.

                            ~:   For noobs   :~

පහත දැක්වෙන පියවර නව git rebaseසහ කරදරයකින් තොරව එය කිරීමට කැමති ඕනෑම කෙනෙකුට උපකාර කළ හැකිය

පියවර 1: මෙම අවස්ථාවේදී ඔබේ ශාඛාවේ කිසිදු කැපවීමක් හා වෙනස්කම් සිදු නොකළ යුතු යැයි උපකල්පනය කිරීම. අපි ඔබේ ශාඛාවට පිවිසෙමු.

git checkout YourBranch
git pull --rebase

සිදුවුයේ කුමක් ද? ඔබේ ශාඛාවේ වැඩ කරන අනෙකුත් සංවර්ධකයින් විසින් සිදු කරන ලද සියලුම වෙනස්කම් ඇදගෙන ඒ මත ඔබේ වෙනස්කම් නැවත ප්‍රතිස්ථාපනය කරයි.

පියවර 2: ඉදිරිපත් කරන ඕනෑම ගැටුම් නිරාකරණය කරන්න.

පියවර 3:

git checkout master
git pull --rebase

සිදුවුයේ කුමක් ද?දුරස්ථ මාස්ටර් වෙතින් සියලු නවතම වෙනස්කම් ඇදගෙන දුරස්ථ මාස්ටර් මත දේශීය මාස්ටර් නැවත ප්‍රතිස්ථාපනය කරයි. මම සෑම විටම දුරස්ථ මාස්ටර් පිරිසිදුව තබා නිදහස් කර තබමි! තවද, දේශීයව ස්වාමියා හෝ ශාඛා මත වැඩ කිරීමට පමණක් කැමැත්තක් දක්වන්න. Git වෙනස්වීම් හෝ ක්‍රියාවන් පිළිබඳව ඔබ අත ගන්නා තුරු මෙය කිරීමට මම නිර්දේශ කරමි. සටහන: ඔබ දේශීය ස්වාමියා නඩත්තු නොකරන්නේ නම් මෙම පියවර අවශ්‍ය නොවේ, ඒ වෙනුවට ඔබට ප්‍රාදේශීය ශාඛාව වෙත සෘජුවම දුරස්ථ මාස්ටර් ලබාගෙන නැවත ප්‍රතිස්ථාපනය කළ හැකිය. මම ආරම්භයේ තනි පියවරක සඳහන් කළ පරිදි.

පියවර 4: ඉදිරිපත් කරන ඕනෑම ගැටුම් නිරාකරණය කරන්න.

පියවර 5:

git checkout YourBranch
git rebase master

සිදුවුයේ කුමක් ද? ස්වාමියාට නැවත පහර දීම සිදු වේ

පියවර 6: ගැටුම් ඇත්නම් ගැටලු විසඳන්න. git rebase --continueවිසඳූ ගැටුම් එකතු කිරීමෙන් පසුව නැවත නැවත භාවිතා කිරීමට භාවිතා කරන්න . ඕනෑම වේලාවක ඔබට git rebase --abortනැවත ගෙවීම අත්හිටුවීමට භාවිතා කළ හැකිය .

පියවර 7:

git push --force-with-lease 

සිදුවුයේ කුමක් ද? ඔබගේ දුරස්ථ YourBranch වෙත වෙනස්කම් තල්ලු කිරීම. --force-with-leaseඔබ ප්‍රතිනිර්මාණය කරන අතරතුර වෙනත් සංවර්ධකයින්ගෙන් ඔබේ බ්‍රාන්ච් සඳහා වෙනත් වෙනස්වීම් තිබේද යන්න තහවුරු කරයි. බල තල්ලු කිරීමට වඩා මෙය ඉතා ප්‍රයෝජනවත් වේ. කිසියම් වෙනස්වීමක් සිදුවුවහොත්, වෙනස්කම් කිරීමට පෙර ඔබේ දේශීය ඔබේ ශාඛාව යාවත්කාලීන කිරීමට ඒවා ලබා ගන්න.

මට වෙනස්කම් තල්ලු කිරීමට අවශ්‍ය ඇයි? නිසි ප්‍රතිප්‍රහාරයකින් පසු දුරස්ථ ඔබගේ ශාඛාවේ බැඳීම් පණිවිඩය නැවත ලිවීමට හෝ ගැටුම් නිරාකරණය වී ඇත්නම්? එවිට ඔබ දේශීය රෙපෝ හි විසඳා ඇති වෙනස්කම් ඔබේ බ්‍රාන්ච් හි දුරස්ථ ගබඩාවට තල්ලු කළ යුතුය

යාහූ ...! ඔබ සාර්ථකව ප්‍රතිනිර්මාණය කිරීම සිදු කරයි.

ඔබත් ඒ ගැන සොයා බලනවා විය හැකිය:

git checkout master
git merge YourBranch

කවදාද සහ ඇයි? ඔබ සහ අනෙකුත් සම-සංවර්ධකයින් විසින් සිදුකරන ලද වෙනස්කම් වලින් ඔබේ ශාඛාව මාස්ටර් බවට ඒකාබද්ධ කරන්න. ඔබට පසුව එම ශාඛාවේම වැඩ කිරීමට අවශ්‍ය වූ විට ඔබේ ශාඛාව මාස්ටර් සමඟ යාවත්කාලීන වේ.

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~

1
මේ සඳහා කුමක් ද: "මාස්ටර් වෙතින් සියලු නවතම වෙනස්කම් ඇදගෙන නවතම මාස්ටර් මත මාස්ටර් නැවත ලබා ගනී." මාස්ටර් මත මාස්ටර් නැවත සකස් කරන්න? ඔබට නවතම ස්වාමියා අදින්න අවශ්‍ය නැද්ද?
ජෝන් ලිට්ල්

@ ජෝන් ලිට්ල් පෙන්වා දීමට ස්තූතියි. මම කිව්වේ Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!. මම මගේ විස්තරය යාවත්කාලීන කරමි.
bh4r4th

24

පියවර 1:

git fetch origin

පියවර 2:

git rebase origin/master

පියවර 3: (ගැටුම් ඇත්නම් නිවැරදි කරන්න)

git add .

පියවර 4:

git rebase --continue

පියවර 5:

git push --force

13
කුමන ශාඛාව ආරම්භ කළ යුතුද යන්න පිළිබඳ පැහැදිලි කිරීමක් නොමැත. හොඳ පිළිතුරක් නොවේ.
K - SO හි විෂ වීම වැඩිවෙමින් පවතී.

1
ගම්‍ය වන දේ ඔබ හරියටම නොදන්නේ නම් කරුණාකර මෙය නොකරන්න. බලෙන් තල්ලු කිරීම හොඳ අදහසක් නොවේ.
ජෝර්ඩි නෙබොට්

14

1. පළමුව මාස්ටර් යාවත්කාලීන කරන්න ...

git checkout [master branch]
git pull [master branch]

2. දැන් ප්‍රධාන ශාඛාව සමඟ ප්‍රභව ශාඛාව නැවත ප්‍රතිස්ථාපනය කරන්න

git checkout [source branch]
git rebase [master branch]
git pull [source branch] (remote/source branch)
git push [source branch]

දුරස්ථව තවමත් ප්‍රභව ශාඛාව නොපවතී නම් එසේ කරන්න:

git push -u origin [source branch]

"et voila ..."


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

6

git fetch origin master:master මාස්ටර්ගේ නවතම අනුවාදය එය පරීක්ෂා කිරීමකින් තොරව ඇද ගනී.

එබැවින් ඔබට අවශ්‍ය වන්නේ:

git fetch origin master:master && git rebase master 👌


git fetchඑය පරීක්ෂා කර බැලීමකින් තොරව මාස්ටර් යාවත්කාලීන කරන්නේ නැද්ද ? ඇරත් යාවත්කාලීනයන් නිවැරදි git fetchනොවේ git mergeද? එබැවින් අප පිටව ගියහොත් masterඑයට නවතම යාවත්කාලීනයන් නොමැත. ඒ නිසා එය, විශේෂාංග ශාඛා මත වන අතර කරන්න කෙටි නොවේ git fetchනම් git rebase origin/master? අපි කරන්න බැහැ git rebase masterබව සිට rebase කිරීමට උත්සාහ කරනු ඇත නිසා masterවිනිවිදක තැනීම, අපි අවශ්ය origin/masterදේශීය දී unmerged නමුත් වාඩි සිට ලබා ගැනීමට.
නොයිටිඩාර්ට්
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.