පවතින, අනුමත නොකළ වැඩ Git හි නව ශාඛාවකට ගෙන යන්න


3137

මම නව අංගයක් සඳහා යම් වැඩක් ආරම්භ කළ අතර ටිකක් කේතනය කිරීමෙන් පසුව, මෙම අංගය තමන්ගේම ශාඛාවක තිබිය යුතු යැයි මම තීරණය කළෙමි.

දැනට පවතින නොගැලපෙන වෙනස්කම් නව ශාඛාවකට ගෙන ගොස් මගේ වර්තමාන එක නැවත සකස් කරන්නේ කෙසේද?

නව අංගය මත පවත්නා කාර්යයන් ආරක්ෂා කරමින් මගේ වර්තමාන ශාඛාව නැවත සැකසීමට මට අවශ්‍යය.


එකම රසවත් විෂය stackoverflow.com/q/556923/269514 ?
ගිල්බර්ටෝ

Answers:


3653

පහත සඳහන් දෑ භාවිතා කරන්න:

git checkout -b <new-branch>

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

git add <files>

සහ ඔබේ නව ශාඛාවට කැප වන්න :

git commit -m "<Brief description of this commit>"

වැඩ කරන නාමාවලියෙහි වෙනස්වීම් සහ දර්ශකයේ සිදු කර ඇති වෙනස්කම් තවමත් කිසිදු ශාඛාවකට අයත් නොවේ . මෙම වෙනස් කිරීම් අවසන් වන ශාඛාව මෙය වෙනස් කරයි.

ඔබ ඔබේ මුල් ශාඛාව නැවත සකසන්නේ නැත , එය එලෙසම පවතී. අවසන් කැපවීම <old-branch>තවමත් එසේම වේ. එබැවින් ඔබ checkout -bහා පසුව කැප වන්න.


යාවත්කාලීන කිරීම 2020 / Git 2.23

Git 2.23 නව උප switchකමාන්ඩ් එක එකතු කරන්නේ අධික ලෙස භාවිතා කිරීමෙන් ඇතිවන ව්‍යාකූලතා ඉවත් කිරීමටය checkout(ශාඛා මාරු කිරීම, ලිපිගොනු ප්‍රතිස්ථාපනය කිරීම, HEAD වෙන් කිරීම යනාදිය)

Git හි මෙම අනුවාදයෙන් පටන් ගෙන, ඉහත විධානය ආදේශ කරන්න:

git switch -c <new-branch>

හැසිරීම සමාන වන අතර නොවෙනස්ව පවතී.


15
මගේ මුල් ශාඛාව නැවත සැකසීමට පෙර, නිම නොකළ අංගයක් කිරීමට මට අවශ්‍යද? එසේත් නැතිනම් එම අවිධිමත් ලිපිගොනු ආරක්ෂා කර ගත හැකිද?
ඩේන් ඕ'කොනර්

192
FYI: වැඩ කරන නාමාවලියෙහි වෙනස්වීම් සහ දර්ශකයේ සිදු කර ඇති වෙනස්කම් ශාඛාවකට අයත් නොවේ. git checkout -b <new branch>එම වෙනස්කම් අවසන් වන ස්ථානවල වෙනස්කම්.
ජකුබ් නාරබ්ස්කි

152
ඔබට දැනටමත් ශාඛාවක් තිබේ නම් සහ ඔබගේ වෙනස්කම් පවතින ශාඛාවට ගෙනයාමට අවශ්‍ය නම්, checkoverflow.com/questions/556923/…
චිරන්තන්

14
: ඔබට දුරස්ථ ගබඩාවට ඔබගේ නව ශාඛා තල්ලු කිරීමට අවශ්ය නම් stackoverflow.com/questions/2765421/...
Dewayne

10
@ ජේ.ඩී.එස්මිත්: නොගැලපෙන වෙනස්කම් කිසිදු ශාඛාවකට අයත් නොවේ . ඔවුන් පදිංචිව සිටින්නේ වැඩ කරන නාමාවලියෙහි පමණි git checkout ./ ඒවා git reset --hard
සොයාගත

333

විකල්පයක් ලෙස:

  1. වත්මන් වෙනස්කම් තාවකාලික ගබඩාවකට සුරකින්න:

    $ git stash

  2. මෙම තොගය මත පදනම්ව නව ශාඛාවක් සාදන්න, නව ශාඛාවට මාරුවන්න:

    $ git stash branch <new-branch> stash@{0}

ඉඟිය: ස්ටෑෂ් නම ටයිප් කිරීම අඩු කිරීමට ටැබ් යතුර භාවිතා කරන්න.


51
අනෙක් ශාඛාව දැනටමත් තිබේ නම්, ඔබට පිටවීම සමඟ එය වෙත මාරු විය හැකිය, එවිට git stash apply.
පුරාවිද්‍යා

6
"ඉඟිය: තොගයේ නම ටයිප් කිරීම අඩු කිරීමට ටැබ් යතුර භාවිතා කරන්න" යන ඉඟිය මට තේරෙන්නේ නැත. "Stash @ {0}" නම නොවේද? මට එය සාර්ථකව ධාවනය කළ නොහැක.
හර්බට්

7
පිළිගත් පිළිතුර stackoverflow.com/a/1394804/754997 ට වඩා මෙය හොඳ ඇයි ?
ක්‍රිස් පේජ්

10
මෙය වඩා හොඳ වන්නේ මන්දැයි මට තේරෙන්නේ නැතgit checkout -b <new branch name>
නොයිටිඩාර්ට්

6
git add -Aගබඩා කිරීමට පෙර ඔබට අවශ්‍ය නැත .
vichle

48

ඔබ අනාචාරයේ කරමින් කර තිබේ නම්, ඔබ, ව්යංගාර්ථවත්ව අතර ඔබගේ ප්රධාන ශාඛා මත, නමුත් ඔබට දැන් වෙනස් ශාඛා එම අනාචාරයේ ගමන් කිරීමට අවශ්ය, මේ ඉක්මන් ක්රමයක් වේ:

  1. ඔබගේ වර්තමාන ඉතිහාසය නව ශාඛාවකට පිටපත් කරන්න.

    git checkout -b <new-feature-branch>
    
  2. දැන් මුල් "අවුල් සහගත" ශාඛාව පෙරළීමට බල කරන්න: (එයට මාරු නොවී)

    git branch -f <previous-branch> <earlier-commit-id>
    

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

    git branch -f master origin/master
    

    හෝ ඔබ කොමිස් 4 ක් කර ඇත්නම්:

    git branch -f master HEAD~4
    

අවවාදයයි: git branch -f master origin/master ඇත හඹායෑම් තොරතුරු නැවත සකස් ශාඛා සඳහා. එබැවින් ඔබ ඔබේmasterශාඛාව වෙනත් තැනකට තල්ලු කිරීමටorigin/masterවින්‍යාස කර ඇත්නම් එම වින්‍යාසය නැති වී යයි.

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


6
මෙය ඇසූ ප්‍රශ්නයට වඩා තරමක් වෙනස් වන ප්‍රශ්නයකට පිළිතුරු සපයයි. මම පිළිතුරක් මෙහි තැබීමට තීරණය කළෙමි, මන්ද මම පිළිතුරක් සොයන විට ගූගල් මා වෙත ගෙන ආවේ මෙයයි. මෙම තත්වය සමඟ කටයුතු කරන සත්‍ය ප්‍රශ්නය මෙහි ඇත.
joeytwiddle

27

පොදු තත්වය පහත දැක්වේ: නව අංගය සඳහා නව ශාඛාවක් නිර්මාණය කිරීමට මට අමතක වූ අතර, පැරණි අංග ශාඛාවේ සියලුම වැඩ කටයුතු කරමින් සිටියෙමි. මම සියලු "පැරණි" වැඩ මාස්ටර් ශාඛාවට කැප කර ඇති අතර, මගේ නව ශාඛාව "මාස්ටර්" වෙතින් වර්ධනය වීමට මට අවශ්‍යය. මම මගේ නව වැඩ සඳහා එක කැපවීමක් කර නැත. ශාඛා ව්‍යුහය මෙන්න: "මාස්ටර්" -> "ඕල්ඩ්_ෆීචර්"

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

18

ඔබ එය සිදු කරන්නේ නම්, ඔබට තනි කැපවීමේ හැඳුනුම්පත ද චෙරි-තෝරා ගත හැකිය. මාස්ටර් හි වැඩ ආරම්භ කරන විට මම බොහෝ විට මෙය සිදු කරමි, පසුව මගේ සම්භවය දක්වා තල්ලු වීමට පෙර දේශීය ශාඛාවක් නිර්මාණය කිරීමට අවශ්‍යය /.

git cherry-pick <commitID>

මෙහි විස්තර කර ඇති පරිදි ඔබට චෙරි-පික් සමඟ කළ හැකි alot ඇත , නමුත් මෙය ඔබට ප්‍රයෝජනවත් අවස්ථාවක් විය හැකිය.


2
නව ශාඛාවකට අර්ධ වෙනස්කම් ගෙනයාම සඳහා හොඳ විසඳුමක් ... ඔබට දැන් අවශ්‍ය දේ කිරීමට, අනෙක් සියළු වෙනස්කම් සිදු කිරීමට, ඔබට ශාඛා කිරීමට අවශ්‍ය ශාඛාව පරීක්ෂා කරන්න, නව ශාඛාවට බැඳී ඇති චෙරි-පික්, ආපසු යන්න මුල් ශාඛාවට, බැඳීමක් නැවත සකසන්න, ඉන්පසු ස්ටෑෂ් පොප් එකක් කරන්න, එකතු කරන්න, බැඳෙන්න, සහ හලෙලූයා ගායනා කරන්න.
මෙරඩිත්

1
Ered මෙරිඩිත්, හාහා, ඒ වගේ දෙයක්. ඔබගේ වෙනස්කම් කල්තියා සැලසුම් නොකරන්නේ නම් මෙය විශිෂ්ටයි ... සහ එය කරන්නේ කවුද;)
මුරපදය

1

GitHub ඩෙස්ක්ටොප් එක සමඟ මෙය කිරීමට ඇත්තෙන්ම පහසු ක්‍රමයක් තිබේ, එය පෙර අංගයක් යැයි මම විශ්වාස නොකරමි.

ඔබ කළ යුත්තේ GitHub ඩෙස්ක්ටොප් හි නව ශාඛාවට මාරුවීම පමණක් වන අතර, එය ඔබගේ වෙනස්වීම් වත්මන් ශාඛාවේ (ඒවා ගබඩා කර තබනු ඇත) අතහැර දැමීමට හෝ නව වෙනස්කම් ඔබ සමඟ නව ශාඛාවට ගෙන ඒමට ඔබෙන් විමසනු ඇත. නව ශාඛාවට වෙනස්කම් ගෙන ඒමට දෙවන විකල්පය තෝරන්න. එවිට ඔබට සුපුරුදු පරිදි කැපවිය හැකිය.

GitHub ඩෙස්ක්ටොප් එක


1

GIT සඳහා භාවිතා කරන සියලුම මෙවලම් සඳහා මෙය ප්‍රයෝජනවත් විය හැකිය

විධානය

ශාඛාව මාරු කරන්න - එය ඔබගේ වෙනස්කම් නව ශාඛාවකට ගෙන යනු ඇත. එවිට ඔබට වෙනස්කම් කළ හැකිය.

 $ git checkout -b <new-branch>

ඉබ්බා ජීඅයිටී

ඔබේ ගබඩාව මත දකුණු-ක්ලික් කර ඉබ්බා ගිට්-> ස්විච් / චෙක්අවුට් භාවිතා කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න

SourceTree

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

රූප විස්තරය මෙහි ඇතුළත් කරන්න


0

මම ob රොබින් පිළිතුර සහ මා කළ සියල්ල ලැයිස්තු ගත කිරීම,

git status                               <-- review/list uncommitted changes
git stash                                <-- stash uncommitted changes
git stash branch <new-branch> stash@{1}  <-- create a branch from stash
git add .                                <-- add local changes
git status                               <-- review the status; ready to commit
git commit -m "local changes ..."        <-- commit the changes
git branch --list                        <-- see list of branches incl the one created above
git status                               <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch>                <-- switch back

! රෙපෝ එකකට වඩා වැඩි ප්‍රමාණයක් තිබේ නම්, නව ශාඛාවට අදාළ වන්නේ කුමන එකක් දැයි බලන්න:

git stash list  
  stash@{0}: WIP on ...  
  stash@{1}: WIP on ...

සහ තනි තනි තොගය පරීක්ෂා කරන්නේ,

git stash show stash@{1}

නැතහොත් සියලුම තොග එකවර පරීක්ෂා කරන්න:

git stash list -p

0

ඔබේ වෙනස්කම් කිරීමට පියවර 3

විශේෂාංග-ශාඛාව යන නම සහිත ඔබ GitHub හි නව ශාඛාවක් නිර්මාණය කර ඇතැයි සිතමු .

රූප විස්තරය මෙහි ඇතුළත් කරන්න

FETCH

    git pull --all         Pull all remote branches
    git branch -a          List all branches now

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

git checkout -b feature-branch

වලංගු කරන්න

ඊළඟ ශාඛාව බැලීමට git branch විධානය භාවිතා කරන්න. එය ඉදිරිපිට * සමඟ විශේෂාංග ශාඛාව පෙන්වනු ඇත

git branch         

කමිටුව

git add .   add all files
git commit -m "Rafactore code or use your message"

යාවත්කාලීන කිරීම සහ ප්‍රභව සේවාදායකයේ තල්ලුව වෙනස් කිරීම

 git pull origin feature-branch
 git push origin feature-branch
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.