3.2 Git branĉantaj - Bazaj branĉantaj kaj kunfando
Ni iru tra simpla ekzemplo de branĉantaj kaj kunfalado kun laborfluo ke vi povus uzi en la reala mondo. Vi sekvu tiujn paŝojn:
- Ĉu labori sur retejo.
- Krei branĉon por nova rakonto vi laboras plu.
- Fari iun laboron en tiu branĉo.
- Ŝanĝi viajn produktado branĉo.
- Krei branĉon aldoni la hotfix.
- Post ĝi estas provita, kunfandi la hotfix branĉo kaj frapas al produktado.
- Ŝanĝi reen al via originala rakonto kaj daŭre labori.
baza branĉantaj
Unue, diru vi laboras en via projekto kaj havas paron de interna jam.
git checkout komando kun la -b ŝaltilo: Tio estas stenografio por:$Git kaso -b iss53Switched to a new branch "iss53"
$Git branĉo iss53$Git kaso iss53

iss53 branĉo antaŭen, ĉar vi havas ĝin Taksis (te viajn HEAD notas al tio): $Vim index.html$Git commit -a -m'added a new footer [issue 53]'

iss53
ŝanĝojn vi faris, kaj vi ne devas meti multe da penado en revertir tiuj
ŝanĝoj antaux vi povas labori sur apliki solvon al kio estas en
produktado. Ĉiuj vi devas fari estas reiri al via master branĉo. Tamen, antaŭ ol fari tion, rimarku ke se via labordosierujon aŭ enscenigante areo havas uncommitted ŝanĝoj kiuj konfliktas kun la branĉo vi ekiras, Git ne permesos vin ŝanĝi branĉoj. Ĝi estas bona havi puran laborista stato kiam vi ŝanĝos branĉoj. Ekzistas manieroj por preni ĉirkaŭ ĉi (nome stashing farante amendi) kiu kovros poste, en Stashing kaj Pureco . Nuntempe, ni supozu vi faris ĉiujn viajn ŝanĝojn, do vi povas reiri al via
master branĉo: Ĉe tiu punkto, via projekto laboranta dosierujo estas ĝuste la vojo ĝi estis antaŭ vi komencis labori pri temo numero 53, kaj povas koncentri sur via hotfix. Tio estas grava punkto memori: kiam vi ŝanĝos branĉoj, Git restarigas vian labordosierujon rigardi kiel ĝi faris la lastan fojon vi faris en tiu branĉo. Ĝi aldonas, forigas, kaj modifas dosierojn aŭtomate certigi via laboranta kopio estas kion la branĉo rigardis kiel en via lasta faras al ĝi.$Git kaso mastroSwitched to branch 'master'
Sekva, Vi havas hotfix fari. Ni kreos hotfix branĉo sur kiu labori ĝis ĝi estas finita:
$Git kaso -b hotfixSwitched to a new branch 'hotfix'$Vim index.html$Git commit -a -m'fixed the broken email address'[hotfix 1fb7853] fixed the broken email address1 file changed, 2 insertions(+)

master master branĉo deploji al produktado. Vi faras tion per la git merge komando: Vi rimarkos la frazo "rapida antaŭen" en tiu merge. Ĉar la commit$Git kaso mastro$Git merge hotfixUpdating f42c576..3a0874cFast-forwardindex.html | 2 ++1 file changed, 2 insertions(+)
C4 almontras la branĉo hotfix vi kunfalis en estis rekte antaŭ la commit C2 vi estas sur, Git simple movas la montrilon antaŭen.
Al frazo kiu alia vojo, kiam vi provas kunfandi unu faras kun fari ke
povas esti atingita sekvante la unua fari la historion, Git simpligas
aferojn movante la montrilon antaŭen ĉar ne ekzistas diferencaj laboro
por kunfandi kune - tio nomiĝas " rapida antaŭen. " Via ŝanĝo estas nun en la instantánea de la commit pintaj al la
master branĉo, kaj vi povas disfaldi la solvon. 
master estas rapida plusendita al hotfix hotfix branĉo, ĉar vi ne plu bezonas ĝin - la master branĉo punktoj al la sama loko. Vi povas forigi ĝin per la -d elekto git branch : Nun vi povas reiri al via agado-en-progreso branĉo sur temo numero 53 kaj daŭre labori sur ĝi.$Git branĉo -d hotfixDeleted branch hotfix (3a0874c).
$Git kaso iss53Switched to branch "iss53"$Vim index.html$Git commit -a -m'finished the new footer [issue 53]'[iss53 ad82d7a] finished the new footer [issue 53]1 file changed, 1 insertion(+)

iss53 hotfix branĉo ne enhavita en la dosierojn en via iss53 branĉo. Se vi bezonas tiri ĝin, vi povas kunfandi viajn master branĉo en vian iss53 branĉo de kuranta git merge master , aŭ vi povas atendi integri tiujn ŝanĝojn ĝis vi decidas tiri la iss53 branĉo reen en master poste. baza kunfando
Supozi vi decidis, ke via temo numero 53 laboro estas kompleta kaj preta esti kunfandita en viamaster branĉo. Por fari tion, vi kunfandi viajn iss53 branĉo en master , multe kiel vi kunfalis via hotfix branĉo antaŭe. Ĉiuj vi devi fari estas kontroli la branĉo vi volas kunfandi en kaj poste ekzekuti la git merge komando: Tio aspektas iom malsama ol la$Git kaso mastroSwitched to branch 'master'$Git merge iss53Merge made by the 'recursive' strategy.index.html | 1 +1 file changed, 1 insertion(+)
hotfix kunfandi vi faris antaŭe. Tiukaze, via evoluo historio diverĝis el kelkaj malnovaj punkto. Ĉar la commit de la branĉo vi estas sur ne estas rekta prapatro de la branĉo vi kunfalado en, Git devas fari iun laboron.
Tiukaze, Git faras simplan tridirekta merge, uzante la du instantáneas
almontras la branĉo konsiletoj kaj la komuna prapatro de la du. 

Nun ke via verko estas kunfanditaj en, vi ne plu bezonas la
iss53 branĉo. Vi povas fermi la bileto en via bileto-sekvado sistemo kaj forigi la branĉo: $ Git branĉo -d iss53
Baza Merge Konfliktoj
Foje, tiu procezo ne iras glate. Se vi ŝanĝis la sama parto de la sama dosiero malsame en la du branĉoj vi kunfandante kune, Git ne povos kunfandi ilin pure. Se via fix por temo numero 53 modifis la sama parto de dosiero lahotfix , vi ricevos merge konflikto kiu aspektas io tiamaniere: Git ne aŭtomate kreita nova merge fari. Ĝi paŭzis la procezo dum vi solvas la konflikton. Se vi volas vidi kio dosieroj unmerged ĉe ajna punkto post merge konflikto, vi povas kuri$Git merge iss53Auto-merging index.htmlCONFLICT (content): Merge conflict in index.htmlAutomatic merge failed; fix conflicts and then commit the result.
git status : Io ajn kiu havas kunfandi konfliktoj kaj ne estis solvita estas listigita kiel unmerged. Git aldonas normo konfliktosolvado markiloj al la dosieroj, kiuj havas konfliktojn, do vi povas malfermi ilin permane kaj solvi tiujn konfliktojn. Via dosiero enhavas sekcion, kiu aspektas io tiamaniere:$Git statusoOn branch masterYou have unmerged paths.(fix conflicts and run "git commit")Unmerged paths:(use "git add <file>..." to mark resolution)both modified: index.htmlno changes added to commit (use "git add" and/or "git commit -a")
Tio signifas la versio en<<<<<<<KAPO: index.html<Div id = "footer">kontakto: email.support@github.com</ div>=======<Div id = "footer">bonvolu kontakti nin ĉe support@github.com</ Div>>>>>>>>Iss53: index.html
HEAD (via master branĉo, ĉar tio estis kion vi Taksis kiam vi kuris via merge komando) estas la supera parto de tiu bloko (ĉio super la ======= ), dum la versio en via iss53 branĉo aspektas kiel ĉiu en la malsupran parton. Por solvi la konflikton, vi devas aŭ elektu unu flanko aŭ la alia aŭ kunfandi la enhavon mem. Ekzemple, vi povus solvi tiun konflikton anstataŭigante la tutan blokon kun ĉi: Tiu rezolucio havas iom de ĉiu sekcio, kaj la<Div id = "footer">bonvolu kontakti nin ĉe email.support@github.com</ Div>
<<<<<<< , ======= kaj >>>>>>> linioj estis tute forigita. Post vi malkomponita ĉiu de tiuj sekcioj en ĉiu konfliktis dosiero, kuri git add sur ĉiu dosiero por marki ĝin kiel solvitaj. Enscenigante la dosiero markas ĝin kiel malkomponita en Git. Se vi volas uzi grafikan ilon por solvi tiujn problemojn, vi povas kuri
git mergetool , kiu pafas supren taŭga vida merge ilo kaj piediras vin tra la konfliktoj: Se vi volas uzi merge ilo alia ol la defaŭlta (Git elektis$Git mergetoolThis message is displayed because 'merge.tool' is not configured.See 'git mergetool --tool-help' or 'git help config' for more details.'git mergetool' will now attempt to use one of the following tools:opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emergeMerging:index.htmlNormal merge conflict for 'index.html':{local}: modified file{remote}: modified fileHit return to start merge resolution tool (opendiff):
opendiff
en tiu kazo ĉar la komando estis prizorgita sur Mac), vi povas vidi
ĉiujn apogis iloj listigitaj ĉe la supro post "unu el la sekvaj iloj."
Ĝuste tajpi la nomon de la ilo vi preferus uzi. noto
Se vi bezonas pli progresintaj iloj por solvi malfacila merge konfliktoj, ni kovras pli sur kunfalado en Altnivela kunfalado .git status denove por kontroli ke ĉiuj konfliktoj estis solvitaj: Se vi estas feliĉa kun tio, kaj vi kontrolos ke ĉiu kiu havis konfliktojn estis enscenigita, vi povas tajpi$Git statusoOn branch masterAll conflicts fixed but you are still merging.(use "git commit" to conclude merge)Changes to be committed:modified: index.html
git commit fini la merge fari. La commit mesaĝon defaŭlte aspektas io tiamaniere: Vi povas modifi tiun mesaĝon kun detaloj pri kiel vi solvis la merge se vi pensas ke estus helpema al aliaj rigardi ĉi merge en la estonteco - kial vi faris kion vi faris, se ĝi ne estas evidenta.Merge branch 'iss53'Conflicts:index.html##Aspektas kiel vi povas fari la merge.#Se tio ne ĝustas, bonvolu forigi la dosieron#.git / MERGE_HEAD#Kaj reprovu.#Bonvolu eniri la commit mesaĝonforviaj ŝanĝoj. linioj komencante#Per'#'estos ignorata kaj malplenan mesaĝon abortas la commit.#La branĉo mastro#Ĉiuj konfliktoj fiksita sed vi ankoraŭ kunfalado.##Ŝanĝoj esti farita:#Modifita: index.html#
Nenhum comentário:
Postar um comentário