වෙනත් ශාඛාවකින් Git හි ශාඛාවක් සාදන්න


1033

මට ශාඛා දෙකක් තිබේ: ස්වාමියා සහ ඩිව්

මට "විශේෂාංග ශාඛාවක්" නිර්මාණය කිරීමට අවශ්‍යයි dev ශාඛාවෙන් .

දැනට dev ශාඛාවේ, මම කරන්නේ:

$ git checkout -b myfeature dev

... (සමහර වැඩ)

$ git commit -am "blablabla"
$ git push origin myfeature

නමුත්, මගේ අතු දෘශ්‍යමාන කිරීමෙන් පසුව, මට ලැබුණේ:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

මම කිව්වේ ශාඛාව එෆ්එෆ් ඒකාබද්ධ වී ඇති බවක් පෙනේ, ඒ ඇයි දැයි මට තේරෙන්නේ නැත ...

මම වැරදි කරන්නේ කුමක්ද?

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

මෙහි විස්තර කර ඇති ආකාරයටම අතු බෙදීමේ ආකෘතියක ඇති සියල්ල .

Answers:


1487

ඔබ පළ කළ සබැඳියේ ක්‍රමයට ඔබ කැමති නම්, Git Flow දෙස බලන්න .

එය එම කාර්ය ප්‍රවාහය සඳහා ඔහු විසින් නිර්මාණය කරන ලද පිටපත් සමූහයකි.

නමුත් ඔබේ ප්‍රශ්නයට පිළිතුරු දීමට:

$ git checkout -b myFeature dev

Dev වෙතින් off MyFeature ශාඛාව නිර්මාණය කරයි. ඔබේ වැඩ කටයුතු කරගෙන යන්න

$ git commit -am "Your message"

දැන් ඔබේ වෙනස්කම් වේගයෙන් ඉදිරියට නොගොස් dev වෙත ඒකාබද්ධ කරන්න

$ git checkout dev
$ git merge --no-ff myFeature

දැන් සේවාදායකයට වෙනස්කම් තල්ලු කරන්න

$ git push origin dev
$ git push origin myFeature

ඔබට එය අවශ්‍ය ආකාරය ඔබ දකිනු ඇත.


34
myFeatureඑය බුද්ධිය ඒකාබද්ධ කිරීමෙන් පසු තල්ලු කිරීමේ වැදගත්කම devකුමක්ද?
ඇලෙක්සැන්ඩර් සුරෆෙල්

3
artspartacus myFeatureඒකාබද්ධ වීමට පෙර ශාඛාව සේවාදායකයට තල්ලු කළේ නම් කිසිවක් නැත. නමුත් myFeatureතවමත් සේවාදායකයට තල්ලු කර නොමැති නම් සහ එය සේවාදායකයේ දිස්වීමට අවශ්‍ය නම්, ඔබ එය තල්ලු කළ යුතුය.
xOneca

15
git checkout -b myFeature dev: මේ ආඥා 3 ලෙස එම git checkout devනම්, git branch myFeatureඑසේ නම්, සහ git checkout myFeature?
කෙවින් මෙරඩිත්

3
එය, නැතහොත් එය විය යුතුය. ඔබ වෙනස් දෙයක් දකිනවාද?
අබිසර්න්

35
වෙනත් අවස්තා වලදි සඳහා පැහැදිලි කිරීම සඳහා, මේ දේ --no-ffවගේ ඒකාබද්ධ පෙනුම
A__

431

Git හි දැනට පවතින ඕනෑම ශාඛාවකින් නව ශාඛාවක් නිර්මාණය කිරීමට ඔබට අවශ්‍ය නම්, විකල්ප අනුගමනය කරන්න.

ඔබට නව ශාඛාවක් සෑදීමට අවශ්‍ය ස්ථානයෙන් පළමුව ශාඛාව වෙනස් කිරීම / පරීක්ෂා කිරීම. උදාහරණයක් ලෙස, ඔබට පහත සඳහන් ශාඛා තිබේ නම්:

  • ස්වාමියා
  • dev
  • ශාඛාව 1

එබැවින් ඔබට " ශාඛාව 1 " නම් වූ ශාඛාව යටතේ "උප බ්‍රාන්ච්_ඕෆ්_බී 1" නමින් නව ශාඛාවක් නිර්මාණය කිරීමට අවශ්‍ය නම් පියවර අනුගමනය කරන්න:

  1. පිටවීම හෝ "ශාඛා 1" බවට වෙනස් කිරීම

    git checkout branch1
    
  2. දැන් නම්, ඔබගේ නව ශාඛා නිර්මාණය "subbranch_of_b1" යටතේ "branch1" පහත සඳහන් විධානය භාවිතා කරමින්.

    git checkout -b subbranch_of_b1 branch1
    

    නමින් නව ශාඛා ඉහත නිර්මාණය කරනු ඇත subbranch_of_b1 ශාඛා යටතේ branch1 (සටහන් බව branch1හිස දැනට එය සන්න සිට ඉහත සඳහන් විධානය තුල අනිවාර්ය නොවේ, ඔබ නිවැරදි කළ හැකි එය ඔබ වුවත් වෙනස් ශාඛා මත නම්).

  3. දැන් උප බ්‍රාන්ච්_ඕෆ්_බී 1 සමඟ වැඩ කිරීමෙන් පසු ඔබට එය දේශීයව හෝ දුරස්ථව සිදු කිරීමට හා තල්ලු කිරීමට හෝ ඒකාබද්ධ කිරීමට හැකිය.

වෙනත් ශාඛාවක් යටතේ ශාඛා නිර්මාණය කිරීමේ නියැදි චිත්‍රක නිදර්ශනය

subbranch_of_b1 දුරස්ථයට තල්ලු කරන්න

 git push origin subbranch_of_b1 

8
subbranch_of_b1 දුරස්ථයට තල්ලු කරන්නේ කෙසේද ??
user269867

13
26 user269867: "git push origin subbranch_of_b1" මෙම කාර්යය ඔබ වෙනුවෙන් කරනු ඇත.
ප්‍රවීන් ජෝර්ජ්

4
දැන්, මම වෙනස්කම් මාස්ටර් වෙත තල්ලු කළහොත්, එය ශාඛා 1 හි ස්වයංක්‍රීයව සිදුවේද?
මාස්ටර් යෝඩා

2
හිස දැනට එය සන්න සිට ඉහත සඳහන් විධානය තුල branch1 අනිවාර්ය නොවන බව සටහන්, ඔබ නිවැරදි කළ හැකි වුවත් එය ඔබ වෙනස් ශාඛා මත නම් මම සොයමින් සිටි දේ තියෙන්නේ
felipsmartins

12
මම මෙහි පැමිණියේ කෙටිකාලීනදැයි කල්පනා git checkout -b some-branchකරමිනි git checkout -b some-branch master. එය නරකද ඔබ බැහැර කළ git checkout -b some-branchසඳහා වන සරල යෙදුමකිgit checkout -b some-branch <current_active_branch>
ෆ්රෑන්ක් Henard

49

ශාඛාවක් සාදන්න

  • ප්‍රධාන ශාඛාව පරීක්ෂා කළ විට ශාඛාවක් සාදන්න. මෙහිදී මාස්ටර් ඉන් කොමිස් ඔබ විසින් නිර්මාණය කරන ලද ශාඛාවට සමමුහුර්ත වේ.

    $ git branch branch1

  • ශාඛා 1 පරීක්ෂා කර බැලූ විට ශාඛාවක් සාදන්න. මෙහි ශාඛා 1 හි කොමිස් ශාඛා 2 ට සමමුහුර්ත වේ

    $ git branch branch2


ශාඛාවක් පරීක්ෂා කරන්න

git checkout විධාන මාර්‍ග ශාඛා හෝ වැඩ කරන ගස් ගොනු ප්‍රතිස්ථාපනය කරන්න

  • $ git checkout branchname

ශාඛාවක් නැවත නම් කිරීම

  • $ git branch -m branch1 newbranchname

ශාඛාවක් මකන්න

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete ( ඒකාබද්ධ කළ තත්ත්වය පරීක්ෂා නොකර මකාදැමීමට බල කරන්න )

ශාඛාව සාදන්න සහ මාරු කරන්න

  • $ git checkout -b branchname

සම්පූර්ණයෙන්ම ඇතුළත් කර ඇති ශාඛා

  • $ git branch --merged


************************** ශාඛා වෙනස්කම් [git diff branch1..branch2] ************** **********

බහු වෙනස
  • $ git diff master..branch1
තනි වෙනස
  • $ git diff --color-words branch1..branch2

1
ශාඛාව නැවත නම් කිරීමෙන් පසු git push origin :old-name new-nameපැරණි නම් දුරස්ථ ශාඛාව මකා දමා නව නම සහිත දේශීය ශාඛාව තල්ලු කරන්න.
95faf8e76605e973

13

එකවර වැඩ කරන්න devශාඛාවේ . සිදුවන්නේ ඔබේ තත්වය තුළ විශේෂාංග ශාඛාව dev ශාඛාවේ කෙළවරේ සිට ඉදිරියට යන නමුත් dev ශාඛාව වෙනස් නොවේ. Line ජු රේඛාවක් ලෙස ඇඳීම පහසුය, මන්ද එය ඉදිරි චලිතය ලෙස සිතිය හැකිය. ඔබ එය දේව් මත A වෙත යොමු කිරීමට සැලැස්වූ අතර එතැන් සිට ඔබ සමාන්තර මාවතක ගමන් කළේය. ශාඛා දෙක සැබවින්ම අපසරනය වී නැත.

දැන්, ඔබ dev මත කැපවීමක් කළහොත්, ඒකාබද්ධ වීමට පෙර, ඔබ නැවතත් එකම කැපවීමකින් ආරම්භ වනු ඇත, A, නමුත් දැන් විශේෂාංග C හා dev වෙත B වෙත යයි. ශාඛා ලෙස ඔබ දෘශ්‍ය කිරීමට උත්සාහ කරන භේදය මෙයින් පෙන්නුම් කෙරේ. දැන් අපසරනය වී ඇත.

*-----*Dev-------*Feature

එදිරිව

       /----*DevB
*-----*DevA
       \----*FeatureC

12

ඔබේ දේශීය නාමාවලියෙහි වෙනත් ශාඛාවකින් ශාඛාවක් සෑදීමට ඔබට පහත විධානය භාවිතා කළ හැකිය.

git checkout -b <sub-branch> branch

උදාහරණයක් වශයෙන්:

  • 'XYZ' නිර්මාණය කිරීමට නියමිත නව ශාඛාවේ නම
  • XYZ නිර්මාණය කළ යුතු ABC ශාඛාවේ නම
git checkout -b XYZ ABC

10

Git 2.23 හඳුන්වා දී ඇති git switchඅතර git restoreඑහි වගකීම් බෙදීමටgit checkout

Git 2.23 අනුව පවත්නා ශාඛාවකින් නව ශාඛාවක් නිර්මාණය කිරීම:

git switch -c my-new-branch

'මගේ-නව ශාඛාව' නව ශාඛාවකට මාරු විය

  • -c --create සඳහා කෙටි වන අතර සුප්‍රසිද්ධ git checkout -b වෙනුවට ආදේශ කරයි

වෙනස්කම් වඩාත් විස්තරාත්මකව පැහැදිලි කරමින් මෙම ගිතුබ් බ්ලොග් සටහන දෙස බලන්න :

Git 2.23 නව පරීක්ෂණාත්මක විධාන යුගලයක් දැනට පවතින ඒවාට ගැලපේ : git switch සහ git rest . මේ දෙක අවසානයේ දී සුප්‍රසිද්ධ git checkout සඳහා වඩා හොඳ අතුරු මුහුණතක් සැපයීමට අදහස් කෙරේ. නව විධානයන් සෑම කෙනෙකුටම පැහැදිලි වෙන්වීමක් ඇති අතර, git checkout හි බොහෝ වගකීම් පිළිවෙලින් බෙදී යයි


5

ඔබට වෙනත් ශාඛාවකින් ශාඛාවක් සෑදීමට අවශ්‍ය නම් බෙලෝ පියවර අනුගමනය කරන්න:

උපකල්පන :

  1. ඔබ දැනට ප්‍රධාන ශාඛාවේ සිටී.
  2. ඔබට කැපවීමට කිසිදු වෙනසක් නොමැත. (ඔබට යම් වෙනසක් කිරීමට තිබේ නම්, එය තැන්පත් කරන්න!).
  3. BranchExistingයනු නමකින් නව ශාඛාවක් සෑදිය යුතු ශාඛාවේ නමයි BranchMyNew.

පියවර :

  1. ඔබේ දේශීය යන්ත්‍රයට ශාඛාව ලබා ගන්න.

    $ git fetch origin BranchExisting : BranchExisting
    

මෙම විධානය මඟින් ඔබේ ප්‍රාදේශීය ශාඛා නාමයෙන් නව ශාඛාවක් නිර්මාණය කරනු ඇත.

  1. දැන්, ප්‍රධාන ශාඛා පිරික්සුම් සිට අලුතින් ලබාගත් ශාඛාව දක්වා

    $ git checkout BranchExisting
    
  2. ඔබ දැන් සිටින්නේ ශාඛාව තුළ ය. දැන් පවතින මෙම ශාඛාවෙන් නව ශාඛාවක් සාදන්න.

    $ git checkout -b BranchMyNew
    

හියර් යූ ගෝ!


1

වෙනත් අයෙකුගෙන් ශාඛාවක් නිර්මාණය කිරීම සඳහා මෙම වාක්‍ය ඛණ්ඩයද භාවිතා කළ හැකිය:

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

එය "git checkout -b" + "git push origin" ට වඩා ටිකක් කෙටි වේ


0

වෙනත් ශාඛාවකින් git වලින් ශාඛාවක් නිර්මාණය කිරීමට විවිධ ක්‍රම:

මෙම පිළිතුර ප්‍රශ්නයේ මාතෘකාව සම්බන්ධයෙන් දැනට පවතින පිළිතුරු වල දැනටමත් නොමැති අමතර අවබෝධයක් එක් කරයි ( වෙනත් ශාඛාවකින් Git හි ශාඛාවක් සාදන්න ), නමුත් එසේ නොවේ දැනටමත් ප්රමාණවත් පිළිතුරු ඇති ප්රශ්නය වඩාත් පටු සුවිශේෂත්වයන් ඇමතීමට මෙහි.

මම මෙය එකතු කරන්නේ මට දැන් පහළින් # 1 කරන්නේ කෙසේදැයි දැන ගැනීමට අවශ්‍ය වූ නිසාය (මා විසින් පරීක්ෂා කර නොමැති ශාඛාවකින් නව ශාඛාවක් සාදන්න), එය කරන්නේ කෙසේදැයි පැහැදිලිව පෙනෙන්නට නොතිබූ අතර ගූගල් සෙවුම් මඟ පෙන්වීය ඉහළ සෙවුම් ප්‍රති .ලයක් ලෙස මෙහි. ඉතින්, මම මගේ සොයාගැනීම් මෙහි බෙදා ගන්නෙමි. මෙහි වෙනත් පිළිතුරකින් මෙය කිසිසේත්ම ස්පර්ශ නොවේ.

මම එහි සිටින අතරතුර, මගේ අනෙක් වඩාත් සුලභ දේද එකතු කරමි git branch මගේ නිත්‍ය කාර්ය ප්‍රවාහයේ මා භාවිතා කරන විධානයන් පහතින් එකතු කරමි.

1. ඔබ පරීක්ෂා කර නොමැති ශාඛාවකින් නව ශාඛාවක් නිර්මාණය කිරීම සඳහා:

ඔබ පරීක්ෂා කර ඇති ඕනෑම ශාඛාවක් ඇති විට branch2සිට සාදන්න branch1(උදා: ඔබ masterපරීක්ෂා කර ඇති බව කියමු ):

git branch branch2 branch1

සාමාන්‍ය ආකෘතිය:

git branch <new_branch> [from_branch]

man git branch එය මෙසේ පෙන්වයි:

git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]

2. ඔබ විසින් පරීක්ෂා කර ඇති ශාඛාවෙන් නව ශාඛාවක් නිර්මාණය කිරීම සඳහා:

git branch new_branch

නැවත සකස් කිරීම, ස්කොෂ් කිරීම, දෘ reset යළි පිහිටුවීම යනාදිය සඳහා උපස්ථ සෑදීම සඳහා මෙය කදිමයි .-- ඔබේ ශාඛාව නරක ලෙස අවුල් කළ හැකි කිසිවක් කිරීමට පෙර.

උදා: මම ක්‍රියාත්මක වන අතර feature_branch1, මම භාවිතා කරමින් කොමිස් 20 ක් 1 ට යොදවන්නෙමි git rebase -i master. මට මෙය කවදා හෝ "අහෝසි කිරීමට" අවශ්‍ය නම්, පළමුව මෙම ශාඛාව උපස්ථ කරමු! මම මෙය සියල්ලම කරමි ... THE ... වේලාව සහ මට මෙම උපස්ථ ශාඛාව වෙත පහසුවෙන් ආපසු යා හැකි බව දැන ගැනීම අතිශයින්ම ප්‍රයෝජනවත් සහ සැනසිල්ලකි feature_branch1. මෙම ක්‍රියාවලියේදී මම අවුල් සහගත වුවහොත් නැවත උත්සාහ කිරීමට නැවත උත්සාහ කරන්න :

git branch feature_branch1_BAK_20200814-1320hrs_about_to_squash

මෙම 20200814-1120hrsකොටස ආකෘතියෙන් දිනය හා වේලාව වන්නේ YYYYMMDD-HHMMhrs14 අගෝ 2020 මත 20hrs (1:20 pm) මට විශ්වාස මම සුදානම් නෑ තෙක් මා රක්ෂිත ශාඛා සොයා ගැනීමට පහසු ක්රමයක් ඇති මෙම මාර්ගයේ: ගත යුතු බවත් 13 නිසා, ඒවා මකන්න. ඔබ මෙය නොකරන්නේ නම් සහ ඔබ නරක ලෙස git reflogඅවුල් කරන්නේ නම්, එය අවුල් කිරීමට පෙර ඔබේ ශාඛාව සොයා ගැනීමට ඔබ භාවිතා කළ යුතුය, එය වඩා දුෂ්කර, වඩා ආතති සහගත හා දෝෂ සහිත වේ.

3. ඔබ විසින් පරීක්ෂා කර ඇති ශාඛාවෙන් නව ශාඛාවක් නිර්මාණය කර පරීක්ෂා කිරීම සඳහා:

git checkout -b new_branch

4. ශාඛාවක් නම් කිරීම

ටර්මිනලයේ සාමාන්‍ය ගොනුවක් හෝ ෆෝල්ඩරයක් නම් කිරීම සේම, git"නැවත නම් කිරීම" 'm'ove විධානයකට සමාන යැයි සලකනු ලැබේ, එබැවින් ඔබ git branch -mශාඛාවක් නැවත නම් කිරීමට භාවිතා කරයි. මෙන්න පොදු ආකෘතිය:

git branch -m <old_name> <new_name>

man git branch එය මේ ආකාරයෙන් පෙන්වයි:

git branch (-m | -M) [<oldbranch>] <newbranch>

උදාහරණය: එහෙනම් අපි ප්රතිනම්කෙරුම් branch_1කිරීමට branch_1.5:

git branch -m branch_1 branch_1.5
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.