Am început ceva de lucru pe o caracteristică nouă și după codificare pentru un pic, am decis ca această caracteristică ar trebui să fie pe cont propriu ramură.
Cum pot muta existente neangajate modificări la o nouă ramură și a reseta un curent mele?
Vreau sa-mi resetez curent ramură păstrând în același timp de muncă existente pe noua caracteristică.
Utilizați următoarele:
git checkout -b <new-branch>
Acest lucru va lăsa curentă filiala cum este, de a crea și de verificare o nouă ramură și să păstreze toate modificările. Puteți face apoi o comite cu:
git add <files>
și să se angajeze la noul ramură cu:
git commit -m "<Brief description of this commit>"
Modificările în directorul de lucru și modificările organizat în index nu aparțin de nici o ramură încă. Asta schimbă în cazul în care aceste modificări ar ajunge în.
Nu't reset original ramură, rămâne cum este. Ultimul comite pe <vechi-sucursala>
va fi în continuare la fel. Prin urmare, verificare -b
și apoi a comis-o.
Alternativ:
`$ git rezerva
$ git marfa sucursala <nou-sucursala> stash@{0}
Sfat: utilizați tasta tab pentru a reduce tastarea rezerva numele.
Dacă ați fost de a face angajează pe ramură principală în timp ce codificate, dar acum vrea să se mute acele se angajează la o altă ramură, aceasta este o modalitate rapidă:
git checkout -b <nou-caracteristică-sucursala>
git branch -f
De exemplu:
git branch -f master origine/master
sau daca ati facut 4 se angajează:
git branch -f master CAPUL~4
Avertisment: git branch -f master origine/de master va _reset urmărire information_ pentru că sucursala. Deci, dacă ați configurat "maestru" ramură a împinge la altă parte decât
origine/master` atunci de configurare va fi pierdut.
Avertisment: Există, de asemenea, un pericol dacă rebazare după ramificare, care este descris aici](https://stackoverflow.com/a/36463546/99777). Singura modalitate de a evita asta este de a crea o nouă istorie folosind cherry-pick. Că link-ul descrie cea mai sigură metodă infailibilă. Dacă aveți modificări neconfirmate, poate doriți să git rezerva la start și
git marfa pop` la sfârșit.
Scenariu comun este urmatoarea: am uitat pentru a crea noi ramuri pentru noua caracteristică, și a fost a face toate lucrările în vechea funcție de ramură. Am comis toate "vechi" locul de muncă pentru ramura de master, și vreau să-mi nouă ramură să crească de la "maestru". Nu am făcut un singur comite de noua mea muncă. Aici este ramura structura: "maestru"->"Old_feature"
git stash
git checkout master
git checkout -b "New_branch"
git stash apply
Dacă ai comis-o, ai putea, de asemenea, alege singur comite ID. Eu fac asta de multe ori când am început munca în maestru, și apoi doresc să creeze o filială locală înainte de a mă împinge să-mi origine/
git cherry-pick <commitID>
Există o mulțime care le puteți face cu cherry-pick, așa cum este descris aici, dar acest lucru ar putea fi un caz de utilizare pentru tine.
Am folosit @Robin răspunsul & lista cu toate că am făcut-o,
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
! Dacă repo are mai mult de un stash, vezi care să se aplice la nou-ramură:
git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ...
și controlați individual rezerva de,
git stash show stash@{1}
Sau controlați toate valorile păstrate la o dată:
git stash list -p
Acolo este de fapt un mod foarte ușor de a face acest lucru cu GitHub Desktop acum, că eu nu't cred că a fost o caracteristică înainte.
Tot ce trebuie să faceți este să treceți la o nouă sucursală în GitHub Desktop, și acesta vă va solicita să părăsească modificările pe ramură de curent (care va fi ascuns), sau de a aduce modificări cu tine la nouă ramură. Doar alege a doua opțiune, de a aduce modificări la noua filiala. Puteți apoi să se angajeze ca de obicei.
Acest lucru poate fi util pentru toți, folosind instrumente pentru GIT
Comanda
Comutator de ramură se va muta modificările la nou-ramură. Apoi, puteți comite modificările.
$ git checkout -b <new-branch>
TortoiseGIT
Faceți clic dreapta pe repository-ul dvs. și de a folosi apoi TortoiseGit->Comutator/Checkout
SourceTree
Utilizați "Checkout" buton pentru a comuta de ramură. Veți vedea "checkout" buton în partea de sus după ce faceți clic pe o ramură. Modificările de la nivelul actual de ramură va fi aplicat în mod automat. Apoi, aveți posibilitatea să le angajeze.