විශේෂාංග ශාඛාවට මාස්ටර් ඒකාබද්ධ කරන්න


1071

Git හි අපට පහත දැක්වෙන තත්වය ඇති බව කියමු:

  1. සාදන ලද ගබඩාවක්:

    mkdir GitTest2
    cd GitTest2
    git init
    
  2. ස්වාමියාගේ සමහර වෙනස් කිරීම් සිදු වන අතර කැපවීම:

    echo "On Master" > file
    git commit -a -m "Initial commit"
    
  3. Feature1 අතු බෙදී ඇති මාස්ටර් සහ සමහර වැඩ කටයුතු සිදු කරයි:

    git branch feature1
    git checkout feature1
    echo "Feature1" > featureFile
    git commit -a -m "Commit for feature1"
    
  4. මේ අතර, ප්‍රධාන කේතයේ දෝෂයක් සොයාගෙන හොට්ෆික්ස් ශාඛාවක් ස්ථාපිත කර ඇත:

    git checkout master
    git branch hotfix1
    git checkout hotfix1
    
  5. දෝෂය හොට්ෆික්ස් ශාඛාව තුළ සවි කර නැවත ස්වාමියා සමඟ ඒකාබද්ධ කරයි (සමහර විට අදින්න / කේත සමාලෝචනයෙන් පසුව):

    echo "Bugfix" > bugfixFile
    git commit -a -m "Bugfix Commit"
    git checkout master
    git merge --no-ff hotfix1
    
  6. විශේෂාංග 1 හි සංවර්ධනය අඛණ්ඩව:

    git checkout feature1
    

මගේ විශේෂාංග ශාඛාවේ හොට්ෆික්ස් අවශ්‍ය යැයි පවසන්න, දෝෂය ද එහි ඇති නිසා විය හැකිය. මගේ විශේෂාංග ශාඛාවට කොමිස් අනුපිටපත් නොකර මෙය සාක්ෂාත් කර ගන්නේ කෙසේද?

විශේෂාංග ක්‍රියාත්මක කිරීමට කිසිදු සම්බන්ධයක් නැති මගේ විශේෂාංග ශාඛාවට නව කොමිස් දෙකක් ලබා ගැනීම වැළැක්වීමට මට අවශ්‍යය. මම අදින්න ඉල්ලීම් භාවිතා කරන්නේ නම් මෙය මට ඉතා වැදගත් බව පෙනේ: මෙම සියලු කැපවීම් ද අදින්න ඉල්ලීමට ඇතුළත් වන අතර මෙය දැනටමත් සිදු කර ඇතත් සමාලෝචනය කළ යුතුය (හොට්ෆික්ස් දැනටමත් මාස්ටර් තුළ ඇති බැවින්).

මට මෙය කළ නොහැක git merge master --ff-only: "මාරාන්තික: වේගයෙන් ඉදිරියට යා නොහැක, ගබ්සා කිරීම.", නමුත් මෙය මට උපකාරවත් වූයේ දැයි මට විශ්වාස නැත.


9
ශාඛාව feature1සම්පූර්ණයෙන්ම දේශීය නම්, බලන්න git rebase.
ජෝකෙස්ටර්

21
ස්තූතියි, ආරම්භකයකු ලෙස, git rebaseමට මැජික් එකක් සේ පෙනේ ....
theomega

13
ශාඛාව විශේෂාංගයක් නම් - දෝෂ නිරාකරණය එහි සිදු නොවිය යුතුය (අවම වශයෙන් අවහිර කිරීමේ දෝෂයක් නොවේ නම්) මෙම ශාඛාවේ අරමුණ නව අංගයක් පෙන්වීමයි. නිවැරදි කිරීම සමඟ බැඳීම පවතින ස්වාමියා සමඟ ඒකාබද්ධ කළ විට දෝෂය නිවැරදි වේ.
gipi

23
සමහර විට වටින්නේ 3. බව ආරම්භක ජුබිලිය git branch feature1හා git checkout feature1බවට සංයුක්ත කර ගත හැකි විය git checkout -b feature1සහ 4. සම්පූර්ණයෙන්ම දක්වා අඩු කළ හැකිgit checkout -b hotfix1 master
ඔයාව Sempai

4
වර්තමාන පිළිගත් පිළිතුර භයානක බැවින් නැවත පැමිණ පිළිගත් පිළිතුර වෙනස් කිරීමට ඔබ කැමතිද?
සර්වබලධාරී

Answers:


1274

අපි ප්‍රධාන ශාඛාව විශේෂාංග ශාඛාවට ඒකාබද්ධ කරන්නේ කෙසේද? පහසු:

git checkout feature1
git merge master

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

GitFlow දෙස බලන්න . එය අනුගමනය කළ හැකි git සඳහා අතු බෙදීමේ ආකෘතියක් වන අතර ඔබ නොදැනුවත්වම දැනටමත් කර ඇත. එය Git හි දිගුවක් වන අතර එමඟින් නව කාර්ය ප්‍රවාහ පියවර සඳහා යම් විධානයක් එකතු වන අතර එය ස්වයංක්‍රීයව කළ යුතු අතර එය ඔබට අතින් කළ යුතුය.

ඉතින් ඔබේ කාර්ය ප්‍රවාහයේ ඔබ කළේ කුමක්ද? ඔබට වැඩ කිරීමට ශාඛා දෙකක් ඇත, ඔබේ විශේෂාංග 1 ශාඛාව මූලික වශයෙන් GitFlow ආකෘතියේ “සංවර්ධනය” ශාඛාව වේ.

ඔබ මාස්ටර් වෙතින් හොට්ෆික්ස් ශාඛාවක් සාදා එය නැවත ඒකාබද්ධ කළේය. දැන් ඔබ හිර වී ඇත.

GitFlow ආකෘතිය ඔබෙන් ඉල්ලා සිටින්නේ හොට්ෆික්ස් සංවර්ධන ශාඛාවට ඒකාබද්ධ කරන ලෙසයි.

එබැවින් සැබෑ පිළිතුර වනුයේ:

git checkout feature1
git merge --no-ff hotfix1

මෙය හොට්ෆික්ස් තුළ සිදු කරන ලද සියලුම වෙනස්කම් විශේෂාංග ශාඛාවට එක් කරයි, නමුත් එම වෙනස්කම් පමණි . ඔවුන් ශාඛාවේ වෙනත් සංවර්ධන වෙනස්කම් සමඟ ගැටෙන්නට පුළුවන, නමුත් ඔබ විශේෂාංග ශාඛාව නැවත මාස්ටර් වෙත ඒකාබද්ධ කළහොත් ඒවා ප්‍රධාන ශාඛාව සමඟ ගැටෙන්නේ නැත.

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


7
දෝෂය නිවැරදි කිරීමේ කැපවීම හොට්ෆික්ස් ශාඛාවේ එක් වරක් පමණක් දිස් වේ, ශාඛාවේ නම මාස්ටර් හා ඩිවල් ශාඛා සමඟ ඒකාබද්ධ වූ පසු එය මකා දැමුවද. ඒකාබද්ධ කිරීමේ බැඳීම පෙන්නුම් කරන්නේ ඒකාබද්ධ කිරීම මඟින් හඳුන්වා දුන් වෙනස්කම් පමණි, එය අනුපිටපතක් ලෙස පෙනේ. නමුත් git ක්‍රියා කරන ආකාරය මෙයයි: ශාඛාව සහ නැවත ඒකාබද්ධ කිරීම. සැබෑ සංවර්ධන කටයුතු සිදුවන්නේ ඒකාබද්ධ නොවන කොමිස් වල පමණක් වන අතර, ඒකාබද්ධ කිරීම පිළිගනු ලබන්නේ ප්‍රති software ලය ක්‍රියාකාරී මෘදුකාංගයක් නම් පමණි.
ස්වේන්

42
මෙය පිළිගත් පිළිතුර විය යුතුය. එය GitHub හි අදින්න ඉල්ලීම් අංගය සමඟද හොඳින් ක්‍රියා කරයි.
Nostalg.io

134
මම එය වටිනා බව සඳහන් හිතන්නේ git merge masterඔබගේ ඒකාබද්ධ වීමේ දේශීය , ස්වාමියා පිටපතක් එසේ ඔබ කරලා තියෙන්නෙ පවා නම් git pullඔබේ ලක්ෂණය ශාඛා වෙන කෙනෙක් වෙනස් ශාඛා ස්වාමියා බවට ඒකාබද්ධ පසු, ඔබට අවශ්ය වෙනවා git checkout masterනම්, git pullඑසේ නම් git checkout feature1, නැවත එකල උන් git merge master.
damick

52
amdamick or just git fetchandgit merge origin/master
Yngvar Kristiansen

21
amdamick @ yngvar-kristiansen git pull origin masterස්වයංක්‍රීයව orgin/masterවත්මන් ශාඛාවට ඒකාබද්ධ වේ
L422Y

625

ඔබේ ශාඛාව ස්වාමියා මත නැවත ප්‍රතිස්ථාපනය කිරීමට ඔබට හැකි විය යුතුය:

git checkout feature1
git rebase master

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

git rebase --skip

ඔබ git logඔබේ විශේෂාංග ශාඛාව මත ක්‍රියා කරන්නේ නම් , දෝෂ නිරාකරණය එක් වරක් පමණක් සහ ප්‍රධාන කොටසේ දිස්වනු ඇත.

වඩාත් සවිස්තරාත්මක සාකච්ඡාවක් සඳහා, මෙම නිශ්චිත භාවිත අවස්ථාව ආවරණය කරන git rebase( https://git-scm.com/docs/git-rebase ) හි ඇති Git පොත් ප්‍රලේඛනය දෙස බලන්න .

=============== අතිරේක සන්දර්භය සඳහා සංස්කරණය කරන්න ==================

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

විශේෂාංග ක්‍රියාත්මක කිරීම හා කිසිදු සම්බන්ධයක් නැති මගේ විශේෂාංග ශාඛාව මත [...] සිදු වීම වැළැක්වීමට මට අවශ්‍යය.

ඔහුගේ පෞද්ගලික ශාඛාව ස්වාමියා වෙත නැවත යොමු කිරීම හරියටම එම ප්‍රති .ලය ලබා දෙනු ඇත. ඊට හාත්පසින්ම වෙනස්ව, ස්වාමියා තම ශාඛාවට ඒකාබද්ධ කිරීමෙන් ඔහු නිශ්චිතවම සිදුවීමට අකමැති දේ හරියටම කරනු ඇත : ඔහු තම ශාඛාව හරහා වැඩ කරමින් සිටින අංග ක්‍රියාත්මක කිරීම හා සම්බන්ධ නොවන බැඳීමක් එක් කිරීම.

ප්‍රශ්න මාතෘකාව කියවන පරිශීලකයින් ඇමතීමට, ප්‍රශ්නයේ සත්‍ය අන්තර්ගතය සහ සන්දර්භය මඟ හැර, ඉන්පසු ඔවුන්ගේ (වෙනස්) භාවිතයට එය සැමවිටම අදාළ වේ යැයි උපකල්පනය කරමින් ඉහළ පිළිතුර අන්ධ ලෙස කියවන්න, මට විස්තාරණය කිරීමට ඉඩ දෙන්න:

  • පුද්ගලික ශාඛා නැවත ප්‍රතිස්ථාපනය කරන්න (එනම් ඔබේ දේශීය ගබඩාවේ පමණක් පවතින අතර ඒවා අන් අය සමඟ බෙදාගෙන නොමැත). හවුල් ශාඛා නැවත ප්‍රතිස්ථාපනය කිරීමෙන් අනෙක් පුද්ගලයින් සතුව ඇති පිටපත් “කැඩී යයි”.
  • ඔබට ශාඛාවක (එය ස්වාමියා හෝ වෙනත් ශාඛාවක් වේවා) පොදු වූ ශාඛාවකට වෙනස්කම් ඒකාබද්ධ කිරීමට අවශ්‍ය නම් (උදා: ඔබ ශාඛාව තල්ලු කිරීමේ ඉල්ලීමක් විවෘත කිරීමට තල්ලු කර ඇත, නමුත් දැන් ස්වාමියා සමඟ ගැටුම් පවතින අතර ඔබ යාවත්කාලීන කළ යුතුය එම ගැටුම් නිරාකරණය කිරීම සඳහා ඔබේ ශාඛාව) ඔබට ඒවා ඒකාබද්ධ කළ යුතුය (උදා: git merge master@ ස්වේන්ගේ පිළිතුර මෙන්).
  • ඔබේ මනාපය නම් ඔබට ඔබේ දේශීය පෞද්ගලික ශාඛාවලට ශාඛා ඒකාබද්ධ කළ හැකිය, නමුත් එය ඔබේ ශාඛාව තුළ "විදේශීය" කොමිස් වලට හේතු වන බව මතක තබා ගන්න.

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


137
නැත, එය ආරක්ෂිත නොවේ: ඔබ නැවත ප්‍රතිස්ථාපනය කරන්නේ නම්, ඔබ ශාඛාවේ ඉතිහාසය වෙනස් කරයි, එය ශාඛාව ඇදගත් සංවර්ධකයින්ට බලපානු ඇත. inf act, පෙරනිමියෙන් ප්‍රතිනිර්මාණය කරන ලද ශාඛාවක් තල්ලු කිරීමට git ඔබට ඉඩ නොදේ: -fප්‍රතිනිර්මාණය කරන ලද අනුවාදය සමඟ ශාඛාව නැවත ලිවීමට තල්ලු කරන විට යාවත්කාලීනය බල කිරීමට ඔබට අවශ්‍ය වේ . පරෙස්සම් වෙන්න!
ඩේවිඩ් සල්ක්

18
Git භාවිතා කරන වෘත්තීය කණ්ඩායම් මෙම ගැටළුව විසඳන්නේ කෙසේද? සාධාරණ අවධානය යොමු කරන්න, හොඳින් සිතා බලා පසුව කරන්න -f? නැතහොත් මට අවශ්‍ය නිසා මගේ සම්පූර්ණ කාර්ය ප්‍රවාහය දෝෂ සහිතද -f?
theomega

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

19
මා වැඩ කර ඇති බොහෝ වෘත්තීය කණ්ඩායම් කිසි විටෙකත් ප්‍රතිචක්‍රීකරණය භාවිතා නොකරයි - ඒවා පෙරනිමියෙන් සියල්ල ඒකාබද්ධ කරයි, එවිට ඉතිහාස වෙනස් කිරීමක් සිදු නොවේ. මෙය මා වඩාත් කැමති වැඩ කිරීමේ ක්‍රමයයි. අනෙක් අතට, සමහර කණ්ඩායම් ඒවා තල්ලු කිරීමට පෙර 'පිරිසිදු කිරීම' සඳහා නැවත භාවිතා කරයි (නමුත් තල්ලු කිරීමෙන් පසු කිසි විටෙකත්.)
ජොනතන් හාර්ට්ලි

11
ඔව්, ඔබ කිසි විටෙකත් පොදු ශාඛා නැවත ප්‍රතිස්ථාපනය නොකළ යුතුය. කෙසේ වෙතත්, OP ගේ ප්‍රශ්නය masterපෞද්ගලික ශාඛාවක් සඳහා කරන ලද නව කොමිස් ඒකාබද්ධ කිරීම සම්බන්ධයෙන් කටයුතු කරන බවක් පෙනෙන්නට තිබුණි (ඔහු "ඔහුගේ" ප්‍රාදේශීය ශාඛාව ගැන සඳහන් කරයි). එවැනි අවස්ථාවකදී, rebaseඑය හොඳයි , ඔබ සඳහන් කළ “පිරිසිදු කිරීම” හා සමානයි.
ඩේවිඩ් සල්ක්

69

මෙම ලිපිය මත පදනම්ව , ඔබ කළ යුත්තේ:

  • මාස්ටර්ගේ නව අනුවාදය මත පදනම් වූ නව ශාඛාවක් සාදන්න

    git branch -b newmaster

  • ඔබගේ පැරණි විශේෂාංග ශාඛාව නව එකක් සමඟ ඒකාබද්ධ කරන්න

    git checkout newmaster

  • නව විශේෂාංග ශාඛාවේ ගැටුම් නිරාකරණය කරන්න

පළමු විධාන දෙක ඒකාබද්ධ කළ හැකිය git checkout -b newmaster.

ඔබට නැවත ඒකාබද්ධ කිරීම අවශ්‍ය නොවන නිසා මේ ආකාරයෙන් ඔබේ ඉතිහාසය පැහැදිලිව පවතී. ඔබට Git rebase කිරීමට අවශ්‍ය නොවන බැවින් ඔබ එතරම් සුපරීක්ෂාකාරී විය යුතු නැත.


7
ඔබ අදාළ git විධානය එක් එක් කරුණ අනුගමනය කළහොත් හොඳයි. එසේ නොමැතිනම් මෙය සැබවින්ම වඩා ආරක්ෂිත හා පිරිසිදු විකල්පය බව මට පෙනේ.
වර්ජිල්ඩ්

imzimi අපට දුරස්ථ ශාඛාවක් තිබේ නම් කුමක් කළ යුතුද? අපි නව යාවත්කාලීන විශේෂාංග ශාඛාව නැවත ප්‍රතිනිර්මාණය කරනවාද? නැත්නම් අපට දුරස්ථ උඩු යටිකුරු කළ හැකිද?
බිල්

IrVirgileD අදාළ git විධානයන් ඇතුළුව වැඩි විස්තර සහිතව මම මගේම පිළිතුරක් පළ කර ඇත්තෙමි .
jkdev

37

git merge

ඔබට පහත පියවර අනුගමනය කළ හැකිය

1. ඒකාබද්ධ origin/masterශාඛා featureශාඛා

# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull

# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull

# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master

2. ඒකාබද්ධ featureශාඛා origin/masterශාඛා

origin/masterදුරස්ථ මාස්ටර් ශාඛාව වන අතර masterදේශීය ප්‍රධාන ශාඛාව වේ

$ git checkout master
$ git pull origin/master

$ git merge feature
$ git push origin/master



ප්‍රතිප්‍රහාරය උද්දීපනය වූ බවක් දැනේ! හොඳ පැරණි ඒකාබද්ධ කිරීම :)!
සදහටම

27

සිමීගේ පිළිතුර සාමාන්‍යයෙන් මෙම ක්‍රියාවලිය විස්තර කරයි. මෙන්න විශේෂතා:

  1. නව ශාඛාවකට සාදන්න. නව ශාඛාව පදනම් වී ඇති බවට වග බලා ගන්න masterඑවිට එයට මෑත කාලීන උණුසුම් විසඳුම් ඇතුළත් වේ.

    git checkout master
    git branch feature1_new
    git checkout feature1_new
    
    # Or, combined into one command:
    git checkout -b feature1_new master
    
  2. නව ශාඛාවට මාරුවීමෙන් පසු, ඔබගේ පවතින විශේෂාංග ශාඛාවේ වෙනස්කම් ඒකාබද්ධ කරන්න. හොට්ෆික්ස් කොමිස් අනුපිටපත් නොකර මෙය ඔබගේ කොමිස් එකතු කරනු ඇත.

    git merge feature1
    
  3. නව ශාඛාවේ, ඔබගේ අංගය සහ ප්‍රධාන ශාඛාව අතර ඇති වන ගැටුම් නිරාකරණය කරන්න.

කළා! ඔබේ අංගය දිගටම කරගෙන යාමට දැන් නව ශාඛාව භාවිතා කරන්න.


2
මෙහි ඇති ගැටළුව නම්, සංවර්ධකයෙකු ස්වාමියාට එරෙහිව යාවත්කාලීන කිරීමට අවශ්‍ය වූ විට නිරන්තරයෙන් නව ශාඛා බිහි කිරීමට කාලය නාස්ති කිරීමයි. අපි වැඩිපුර වැඩ කරන විට දිනකට 3 වතාවක් කැබලි හා අතු ගොඩක් සාදනු ඇත. සියලුම දේශීය කුණු අතු පිරිසිදු කිරීම සහ දුරස්ථව ඒවා ඉවත් කරන්නේ කෙසේද යන්න පිළිබඳව ඔබ උපදෙස් ලිවිය යුතුය. මෙම සියලු ශාඛා නම් කිරීම පිළිබඳව අපට උපදෙස් අවශ්‍ය වන බැවින් අප ව්‍යාකූල නොවනු ඇත. එය නොමැතිව, මෙය ශාඛා පද්ධතියක් අවුල් ජාලයක් බවට පත් කරනු ඇත.
pauljohn32

4
ඔබ හරි, මෙය සැමවිටම නොකළ යුතුය. (1) ඔබේ අංගය සඳහා ස්වාමියාගේ වෙනස්කම් අවශ්‍ය වූ විට හෝ (2) ඔබ ඔබේ ශාඛාව ස්වාමියා සමඟ ඒකාබද්ධ කිරීමට සූදානම් වන අතර ගැටුම් ඇති විය හැකිය. අවුල් සහගත තත්වයන් වළක්වා ගැනීම සඳහා, ඔබේ ශාඛාව ඒකාබද්ධ වූ පසු එය මකා දැමිය හැකිය.
jkdev

11

ඔබේ ප්‍රධාන ශාඛාව ඔබගේ වර්තමාන ශාඛාවට ඒකාබද්ධ කිරීමට ඔබට භාවිතා කළ හැකි පිටපතක් මෙන්න.

පිටපත පහත සඳහන් දේ කරයි:

  • ප්‍රධාන ශාඛාවට මාරු වේ
  • ප්‍රධාන ශාඛාව අදිනවා
  • ඔබගේ වර්තමාන ශාඛාවට නැවත මාරු වේ
  • ප්‍රධාන ශාඛාව ඔබගේ වර්තමාන ශාඛාවට ඒකාබද්ධ කරයි

මෙම කේතය කණ්ඩායම් ගොනුවක් ලෙස (.bat) සුරකින්න සහ ස්ක්‍රිප්ට් ඔබේ ගබඩාවේ ඕනෑම තැනක තබන්න. එය ක්‍රියාත්මක කිරීමට එය මත ක්ලික් කර ඔබ සකසා ඇත.

:: This batch file pulls current master and merges into current branch

@echo off

:: Option to use the batch file outside the repo and pass the repo path as an arg
set repoPath=%1
cd %repoPath%

FOR /F "tokens=*" %%g IN ('git rev-parse --abbrev-ref HEAD') do (SET currentBranch=%%g)

echo current branch is %currentBranch%
echo switching to master
git checkout master
echo.
echo pulling origin master
git pull origin master
echo.
echo switching back to %currentBranch%
git checkout %currentBranch%
echo.
echo attemting merge master into %currentBranch%
git merge master
echo.
echo script finished successfully
PAUSE

10

ඔබේ විශේෂාංග ශාඛාවට අවශ්‍ය නිශ්චිත බැඳීම් (ය) අදින්න ඔබට "චෙරි-පික්" කිරීමට හැකිය.

කිසිවක් කරන්න git checkout hotfix1ඇති hotfix1 ශාඛා මත ලබා ගැනීමට. එවිට කළ git logප්රශ්නයට සිදු වූ SHA-1 හැෂ් (අහඹු අකුරු සහ ඉලක්කම් විශාල අනුක්රමය, සුවිශේෂ ලෙස සිදු හඳුනා) ලබා ගැනීමට. එය පිටපත් කරන්න (හෝ පළමු අක්ෂර 10 හෝ ඊට වැඩි).

ඉන්පසු, git checkout feature1ඔබේ විශේෂාංග ශාඛාවට නැවත පිවිසීමට.

ඉන්පසු, git cherry-pick <the SHA-1 hash that you just copied>

එමඟින් එම කැපවීම සහ එම කැපවීම පමණක් ඔබේ විශේෂාංග ශාඛාවට ඇද දමනු ඇත. එම වෙනස ශාඛාව තුළ පවතිනු ඇත - ඔබ එය "චෙරි-තෝරාගත්" ය. ඉන්පසු, ඔබේ හදවතේ අන්තර්ගතයට වැඩ නැවත ආරම්භ කරන්න, සංස්කරණය කරන්න, කැප කරන්න, තල්ලු කරන්න.

අවසානයේදී, ඔබ එක් ශාඛාවක සිට ඔබේ විශේෂාංග ශාඛාවට (හෝ අනෙක් අතට) තවත් ඒකාබද්ධ කිරීමක් සිදු කළ විට, ඔබ දැනටමත් එම විශේෂිතව ඒකාබද්ධ වී ඇති බව Git හඳුනා ගනී. කැපවීම , එය නැවත සෑදිය යුතු නැති බව දැනගන්න, එය "මඟ හරින්න".


මම මෙය හොඳ අදහසක් ලෙස නොසිතමි. එවිට, IMO, හොට්ෆික්ස් කැපවීම ඔබේ විශේෂාංග ශාඛාවේ ඉතිහාසය තුළ සැබවින්ම පෙන්වනු ඇත, එය ඔබට මූලික වශයෙන් අවශ්‍ය නොවේ.
මාටින් පෙකා

1
“අවසානයේදී, ඔබ එක් ශාඛාවක සිට ඔබේ විශේෂාංග ශාඛාවට (හෝ අනෙක් අතට) තවත් ඒකාබද්ධ කිරීමක් සිදු කළ විට, ඔබ දැනටමත් ඒකාබද්ධ වී ඇති බව git විසින් හඳුනා ගනු ඇත [...]” - එය ඇත්ත වශයෙන්ම ක්‍රියාත්මක වන්නේ කෙසේද? git mergeමෙම “නැවත ධාවනය කිරීම” තුළ ඔබ ක්‍රියා කරන බව මම නොසිතමි - ඔබ ඉඟි කරන බවක් පෙනේ (“එය මඟ හරින්න”). චෙරි අච්චාරු දැමීම හා ඒකාබද්ධ කිරීම ගැටළු වලට තුඩු දිය හැකිය. බලන්න: news.ycombinator.com/item?id=3947950
Guildenstern

2

මම මගේ පිළිතුර අනෙක් අයට සමාන කරන නමුත් කියවීමට හා ක්‍රියාත්මක කිරීමට ඉක්මන්ම පිළිතුර එය විය හැකිය.

සටහන: මෙම අවස්ථාවේ දී නැවත සකස් කිරීම අවශ්‍ය නොවේ.

මම නම් උපකල්පනය repo1සහ ශාඛා දෙකක් masterහාdev-user .

dev-user යනු එක්තරා තත්වයක සිදු කරන ලද ශාඛාවකි master .

දැන් dev-userසහ දෙකම උපකල්පනය කරන්නmaster අත්තිකාරම්.

යම් අවස්ථාවක දී මට අවශ්‍ය dev-userසියලුම කොමිස් ලබා ගැනීමට ය master.

මම කොහොමද ඒක කරන්නේ?

git checkout master 
git pull 
git checkout dev-user
git pull
git merge master 
git push 

මෙම තත්වය තුළ වෙනත් කෙනෙකුට මෙය උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.


0

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

 //below does not get the latest from remote master to my local feature branch without git pull
    git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge master

මෙය පහත ක්‍රියා කරයි, සටහන භාවිතා කරන්න git merge origin / master:

 git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge origin/master

0
In Eclipse -

1) පිටවීමේ ප්‍රධාන ශාඛාව

Git Repositories ->Click on your repository -> click on Local ->double click master branch
->Click on yes for check out

2) ප්‍රධාන ශාඛාව අදින්න

Right click on project ->click on Team -> Click on Pull

3) ඔබේ විශේෂාංග ශාඛාව පරීක්ෂා කරන්න (1 කරුණෙහි සඳහන් පියවර අනුගමනය කරන්න)

4) විශේෂාංගයට මාස්ටර් ඒකාබද්ධ කරන්න

Git Repositories ->Click on your repository -> click on Local ->Right Click on your selected feature branch ->Click on merge ->Click on Local ->Click on Master ->Click on Merge.

5) දැන් ඔබට ශාඛා ශාඛාවේ සියලුම වෙනස්කම් විශේෂාංග ශාඛාවෙන් ලැබෙනු ඇත. ගැටුම් ඇත්නම් ඉවත් කරන්න.

For conflict if any exists ,follow this -
Changes mentioned as Head(<<<<<< HEAD) is your change, Changes mentioned in branch(>>>>>>> branch) is other person change, you can update file accordingly.

සටහන - ගැටුම් ලිපිගොනු සඳහා ඔබ දර්ශකයට එකතු කළ යුතුය

6) විශේෂාංග ශාඛාවේ ඔබගේ වෙනස්කම් සිදු කර තල්ලු කරන්න.

Right click on project ->click on Team -> Click on commit -> Commit and Push.

හෝ

Git Repositories ->Click on your repository -> click on Local ->Right Click on your selected feature branch ->Click on Push Branch ->Preview ->Push
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.