වත්මන් වෙනස්කම් සමඟ Git ශාඛාව සාදන්න


888

මගේ කාර්යය පහසු වේ යැයි සිතමින් මම මගේ ප්‍රධාන ශාඛාවේ වැඩ කිරීමට පටන් ගතිමි . ටික වේලාවකට පසු මට තේරුණා ඒ සඳහා වැඩි වැඩ කොටසක් අවශ්‍ය වන අතර මේ සියල්ල නව ශාඛාවක කිරීමට මට අවශ්‍යයි.

මාස්ටර් අපිරිසිදු නොකර නව ශාඛාවක් සාදා මේ සියලු වෙනස්කම් මා සමඟ ගන්නේ කෙසේද?




8
ඔව්, මේවා අනුපිටපත් ප්‍රශ්න, නමුත් වචන ඉතා වෙනස් බැවින් මම තබා ගැනීමට මෙය ප්‍රයෝජනවත් යැයි සිතමි. මෙහි මූලික වචන සටහන් කරන්න: branch current changesඑදිරිව existing uncommited branch. ඉංග්‍රීසි කතා කරන ඕනෑම කෙනෙකුට ඔවුන් එක හා සමාන බව වහාම පෙනෙනු ඇත, නමුත් සෙවුම් යන්ත්‍ර බොහෝ විට එසේ නොවනු ඇත. මෙම ප්‍රශ්නය තබා ගන්න.
SMBiggs

Answers:


726

ඔබ තවම කිසිදු කැපවීමක් කර නොමැති නම්, (1: ශාඛාව) සහ (3: පිටවීම) පමණක් ප්‍රමාණවත් වේ.
නැතහොත්, එක් විධානයකින්:git checkout -b newBranch

git resetමෑන් පිටුවේ සඳහන් පරිදි :

$ git branch topic/wip     # (1)
$ git reset --hard HEAD~3  # (2)  NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip   # (3)
  1. ඔබ යම් යම් කැපවීම් කර ඇත, නමුත් ඒවා " master" ශාඛාවේ සිටීමට නොමේරූ බව තේරුම් ගන්න . මාතෘකා ශාඛාවක ඒවා ඔප දැමීම දිගටම කරගෙන යාමට ඔබට අවශ්‍යය, එබැවින් ධාරාවෙන් topic/wipශාඛා කපා ඉවත් කරන්න HEAD.
  2. එම කොමිස් masterතුනෙන් මිදීමට ශාඛාව පෙරළන්න.
  3. " topic/wip" ශාඛාවට මාරු වී වැඩ කරන්න.

සටහන: විධානයක “විනාශකාරී” බලපෑම හේතුවෙන් git reset --hard(එය දර්ශකය සහ වැඩ කරන ගස යළි පිහිටුවයි. වැඩ කරන ගසෙහි ලුහුබැඳ ඇති ලිපිගොනු වල කිසියම් වෙනසක් <commit>ඉවතලන බැවින් ), මම ඒ සමඟ යන්නෙමි:

$ git reset --soft HEAD~3  # (2)

මෙය මට කිසිදු පුද්ගලික ගොනුවක් අහිමි නොවන බවට සහතික වනු ඇත (දර්ශකයට එකතු කර නැත).
මෙම --softවිකල්පය භාවිතා කරන්නේ (නමුත් හිස ගන්න පුලුවන් සියලු දී දර්ශකය ගොනුව හෝ කම්කරු ගසක් ස්පර්ශ නොකරන <commit>සියලු මාතයන් කරන්න වගේ,).


Git 2.23+ සමඟ , නව විධානයgit switch මඟින් ශාඛාව එක පේළියකින් නිර්මාණය කරනු ඇත (එකම ආකාරයේ reset --hard, එබැවින් එහි බලපෑම ගැන පරිස්සම් වන්න):

git switch -f -c topic/wip HEAD~3

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

40
අනාගත පා readers කයන්ට සටහන: පහළ සිට ඉහළට කියවන්න (නැතහොත් සියල්ල කියවීමට වග බලා ගන්න). git reset --hardඔබගේ වෙනස්කම් නිරුවත් කරනු ඇත, ඒවා තවමත් සිදු කර නොමැති නම් ඒවා සොයාගත නොහැකි වනු ඇත! ඔබට අවශ්‍ය විය හැකියgit checkout -b …
කොන්රාඩ් මේයර්

3
On කොන්රාඩ්මේයර් හොඳ කරුණක්. මම පිළිතුර සංස්කරණය කර git checkout -bපළමු තැන තැබුවෙමි .
VonC

6
මාතෘකාව / ශාඛාව ?? ශාඛා නාමයක් පමණක් නොව, මෙම නම් කිරීම සඳහා විශේෂ හේතුවක් තිබේද? පුදුමයි.
සෑම් ස්ටොයිලිංග

2
T එය නාම අවකාශ නාමකරණ සම්මුතියක් පමණි (ශාඛා පහසුවෙන් වර්ගීකරණය කිරීමේ ක්‍රමයක්, නාම අවකාශයන් නිර්වචනය කිරීම සඳහා ධූරාවලි ශාඛා නාම භාවිතා කිරීම ): stackoverflow.com/a/2527436/6309 . උදාහරණයක් ලෙස, ගැටළු සඳහා: randyfay.com/content/… . ඔබේ ශාඛා නම් කිරීමේදී ඔබ ධූරාවලියක් භාවිතා කළ යුතු නැත. topic_wipවැඩ කරයි;)
VonC

278

මෙම ප්‍රශ්නයේ සඳහන් පරිදි: Git: මාස්ටර් මත අස්ථිර / නොගැලපෙන වෙනස්කම් වලින් ශාඛාවක් සාදන්න : තොග අවශ්‍ය නොවේ.

භාවිතා කරන්න:

git checkout -b topic/newbranch

කිසියම් එකඟ නොවූ වැඩක් නව ශාඛාව වෙත ගෙන යනු ලැබේ.

ඔබ තල්ලු කිරීමට උත්සාහ කළහොත් ඔබට පහත පණිවිඩය ලැබෙනු ඇත

මාරාන්තික: වර්තමාන ශාඛා අංගය / NEWBRANCH හි උඩුමහලේ ශාඛාවක් නොමැත. වත්මන් ශාඛාව තල්ලු කර දුරස්ථය උඩු මහලට සැකසීමට, භාවිතා කරන්න

git push --set-upstream origin feature/feature/NEWBRANCH

ශාඛාව දුරස්ථව නිර්මාණය කිරීමට යෝජනා කළ ආකාරයටම කරන්න:

git push --set-upstream origin feature/feature/NEWBRANCH


3
ඔබට 'උඩු මහලේ ශාඛාවක් නැත' දෝෂය ලැබෙන්නේ ඔබ නව ශාඛාව තල්ලු කළහොත් මිස ඔබ නව වැඩක් කරන විට නොවේ.
සෑම්

2
amsam මම ඒ අනුව පිළිතුර සංශෝධනය කර ඇත
නික් කෙනඩි

73

මෙම පියවර අනුගමනය කරන්න:

  1. නව ශාඛාවක් සාදන්න:

    git branch newfeature
    
  2. නව ශාඛාව පරීක්ෂා කරන්න: (මෙය ඔබගේ වැඩ නැවත සකසන්නේ නැත.)

    git checkout newfeature
    
  3. දැන් මෙම නව ශාඛාව සඳහා ඔබේ වැඩ කටයුතු කරන්න:

    git commit -s
    

ඉහත පියවරයන් භාවිතා කිරීමෙන් ඔබේ මුල් ශාඛාව පිරිසිදුව තබා ගත හැකි අතර ඔබට 'git reset --hard' කිරීමට අවශ්‍ය නැත.


3
3 වන පියවරේදී '-s' කරන්නේ කුමක්ද?
SMBiggs

12
C ස්කොට්බිග්ස් එය අනවශ්‍ය නමුත් සමහර අය අනුගමනය කරන පුරුද්දකි. එය "--signoff" සඳහා කෙටි වන අතර ල logs ු -සටහන් දෙස බලන අනාගත පුද්ගලයින් සඳහා වන කැපවීමට ඔබේ පරිශීලක නාමය එක් කරයි.
ෆ්‍රෑන්ක් බ්‍රයිස්

5
හොඳ පිළිතුරක්, නමුත් -s3 වන පියවර අවශ්‍ය නොවේ .
මොහොමඩ් අලි

31

ඔබ තවම කිසිදු කැපවීමක් කර නොමැති බැවින්, ඔබට ඔබගේ සියලු වෙනස්කම් තොගයට සුරැකිය හැකිය, නව ශාඛාවක් නිර්මාණය කර මාරු කළ හැකිය, ඉන්පසු එම වෙනස්කම් ඔබේ වැඩ කරන ගසට නැවත ඇතුල් කරන්න:

git stash  # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop  # apply stash and remove it from the stash list

10
හෝ VonC පෙන්වා දුන් පරිදි 'git checkout -b newbranch' සහ තොගය මඟ හරින්න
willcodejavaforfood

ill විල්: මම සිතුවේ නව ශාඛාවක් සෑදීමෙන් ඔබ විසින් සිදු කරන ලද වෙනස් නොකළ වෙනස්කම් නැවත ලියනු ඇති බවයි, නමුත් මෙය එසේ නොවේ නම්, ඔව් ඔබට තොගය මඟ හැරිය හැක.
ඊතර්

1
මම එය අත්හදා බැලූ අතර එය හොඳින් ක්‍රියාත්මක විය, git ඉතා කල්පනාකාරී වන අතර දේශීය වෙනස්කම් කිසිවක් නැවත ලියන්නේ නැත
willcodejavaforfood

2
මම හිතන්නේ එය යතුරු ලියනයකි, නමුත් එය ඉහළට ඔසවන්න git stash push. ඔබ අනුමාන භාවිතා කිරීමට අවශ්ය වනු ඇත git stashහෝ git stash save. සලකුණු නොකළ ලිපිගොනු තොගයට ඇතුළත් කිරීමට ඔබට අවශ්‍ය නම්, --include-untrackedවිකල්පය භාවිතා කරන්න . ඒ හා සමානව, ඔබට නොසලකා හරින ලද සහ නොසලකා හරින ලද ලිපිගොනු දෙකම තොගයට ඇතුළත් කිරීමට අවශ්‍ය නම්, ඒ --addවෙනුවට විකල්පය භාවිතා කරන්න.
හය

ඔබ දැනටමත් ශාඛාව නිර්මාණය කර ඇත්නම්, මෙය ප්‍රයෝජනවත් වේ.
නිසැකවම

13

නව ශාඛාවකට නව වෙනස්කම් එක් කිරීමට සහ දුරස්ථයට තල්ලු කිරීමට:

git branch branch/name
git checkout branch/name
git push origin branch/name

බොහෝ විට මට නව ශාඛාව නොපෙනෙන්නේ ඇයි / ව්‍යාකූල වීමට මුල් කොටස තල්ලු කිරීමට හා ව්‍යාකූල වීමට මට අමතක වේ

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.