'මාස්ටර්' 'සම්භවය / මාස්ටර්' ලෙස නැවත සකසන්නේ කෙසේද?


239

මට පහත සඳහන් දේ සරල ආකාරයකින් කළ හැකිද?

git checkout origin/master
git branch -D master
git branch master
git checkout master

සමහර විට, වැඩ කරන ගස ස්පර්ශ නොකර මෙය කළ හැකිය: stackoverflow.com/a/12343727/586086
මාඕ

6
කරුණාකර ඔබ පිළිගත් පිළිතුර යාවත්කාලීන කරන්න: ind KindDragon ගේ පිළිතුර නිවැරදි හා කෙටි ය.
රොබට් සීමර්

Answers:


354

ලෙස KindDragon ගේ පිළිතුර සඳහන්, ඔබ එට සත්යවශයෙන්ම හැකි masterකෙලින් origin/masterසමග:

git checkout -B master origin/master

මෙම git checkoutman පිටුව සඳහන්:

නම් -Bලබා දී ඇත, <new_branch>එය නොපවතියි නම් නිර්මාණය ඇත; එසේ නොමැතිනම් එය නැවත සකසනු ලැබේ. මෙය ගණුදෙනු සමාන වේ

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Git 2.23+ (2019 අගෝස්තු), git checkoutඅවුල් සහගත බැවින් , නව (තවමත් පර්යේෂණාත්මක) විධානය git switch:

git switch -C master origin/master

එනම්:

-C <new-branch>
--force-create <new-branch>

සමාන --createනම් හැර <new-branch>දැනටමත් පවතී, එය වෙත යළි පිහිටුවීම කෙරේ <start-point>.
මෙය පහසු කෙටිමඟකි:

$ git branch -f <new-branch>
$ git switch <new-branch>

මුලින් යෝජනා කළේ:

වැනි දෙයක්:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

දෙවන පියවර අත්‍යවශ්‍ය නොවේ.


1
ඔබට එය එක් පේළියකින් කළ හැකිය.
රොබට් සීමර්

104

Git මෙම විධානයට සහය දක්වයි:

git checkout -B master origin/master

origin/masterශාඛාව පරීක්ෂා කර එහි ශාඛාව නැවත සකසන්න master.


4
එකම සැබෑ පිළිතුර.
රොබට් සීමර්

3
යතුරු පහර හතරක් සුරකින්න - ඔබට උපුටා දැක්වීම් අවශ්‍ය නොවේ. යන්තම්: git checkout -B මාස්ටර් සම්භවය / මාස්ටර්
zumalifeguard

අපි කාරණා 2 ක් කළ බව කියමු, පළමුවැන්න ශාඛාව සමඟ ඒකාබද්ධ කිරීම සහ දෙවැන්න නිත්‍යයි. මම නැවත සම්භවය / ස්වාමියා වෙත ගියහොත් ඒකාබද්ධ වීමට කුමක් සිදුවේද?
utdev

1
යාවත්කාලීන git fetch origin masterවී ඇති බවට සහතික වීමට පෙර ඔබට අවශ්‍ය origin/masterනොවේද?
pedrozath

ඔව්, ඔබ කළ යුත්තේ සියලු විසඳුම් සමග ඇත්තෙන්ම git fetchපළමු
KindDragon

30

මෙම විකල්පයට සාපේක්ෂව VonC හි පිළිතුරට පවා සංකීර්ණ බවක් ඇතැයි මම සිතමි.

git update-ref refs/heads/master origin/master
git reset --hard master

git ස්වයංක්‍රීයව ref හි සෑම අගයක්ම ලොග් කරයි (reflog හරහා). එබැවින් ඔබ එම විධානය ක්‍රියාත්මක කිරීමෙන් පසුව master@{1}, මාස්ටර්ගේ පෙර අගය සඳහන් කරයි.

VonC හි පිළිතුර නිවැරදි ය, නමුත් එය ගොනු පද්ධතියට මාස්ටර්ගේ පැරණි වටිනාකම පරීක්ෂා කිරීමට කාලය නාස්ති කරයි.

ඔබ repo හි ඇති අනාථ වස්තූන් ගැන සැලකිලිමත් වන්නේ නම්, එවිට ඔබට ධාවනය කළ හැකිය git gc


1
සිත්ගන්නා විකල්පයක් ලෙස පෙනේ. +1
VonC

මට තවමත් ලැබෙනවාAlready on 'master'
ෆ්‍රෙන්ඩ්සාක්

ඔබේ මිත්‍රයා, මාස්ටර් යාවත්කාලීන කිරීමට පෙර ඔබ දැනටමත් මාස්ටර් පරීක්ෂා කර ඇති බව සැලකිල්ලට ගැනීම මට අමතක විය. එම අවස්ථාවේ දී පවා ක්‍රියාත්මක විය යුතු පිළිතුරක් මම යාවත්කාලීන කර ඇත්තෙමි.
ඇලෙක්සැන්ඩර් කුරුළු

ඔබ ස්වාමියා මත නොසිටියද මෙය ක්‍රියාත්මක වේ (ඇත්ත වශයෙන්ම ඉඟි සම්භවය / ස්වාමියා වෙත යොමු වන වෙන්වූ හෙඩ් තත්වයක් වැනි). එවිට, ඔබට පැරණි ලිපිගොනු repo හරහා පෙරළීමකින් තොරව චෙක්පට් මාස්ටර් කළ හැකිය. මහා!
ඇන්ඩ rew මාඕ

23

ඔබ දැනටමත් සිටී නම් ඔබට masterපහත සඳහන් දෑ කළ හැකිය:

git reset --hard origin/master

එමඟින් දේශීය masterශාඛාව origin/masterදුරස්ථයට යොමු කරන අතර වැඩ කරන ඕනෑම වෙනස් කිරීමක් ඉවතලනු ඇත.


ගොනු මකා දමනු ඇත! ඔබ ලිපිගොනු නිර්මාණය කර / සංස්කරණය කර ඒවා මත "git add" ධාවනය කර ඇත්නම්, මෙම විධානය මඟින් ඒවා මකා දමනු ඇත. අවවාද කරන්න.
චීසෝ

මෙම ප්‍රවේශය වඩා හොඳද git checkout -B master 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.