2.4 Bazoj de Git - Malfarante Aĵoj
Pereaj Aĵoj
En iu stadio, eble vi volas malfari ion. Tie, ni revizii kelkaj bazaj iloj por malfarante ŝanĝoj kiujn vi faris. Estu zorgema, ĉar vi ne povas ĉiam restarigu iuj de tiuj undos. Tiu estas unu el la malmultaj areoj en Git kie vi povas perdi iun laboron se vi faras ĝin malĝuste.Ŝanĝi Via Lasta Transdonu
Unu el la komunaj undos okazas kiam vi faras tro frua kaj eble forgesis aldoni kelkajn dosierojn, aŭ vi fuŝas vian commit mesaĝo. Se vi volas provi ke fari denove, vi povos kuri fari kun la--amend eblo: $ git commit --amend
Tiu komando prenas vian surscenigo areo kaj uzas ĝin por la commit.
Se vi faris neniun ŝanĝojn ekde via lasta faras (ekzemple, vi kuri ĉi
komando tuj post via antaŭa faris), tiam via instantánea aspektos
precize la samaj kaj ĉiuj vi ŝanĝas estas via commit mesaĝo. Tion transdonu-mesaĝo redaktoro fajroj, sed ĝi jam enhavas la mesaĝon de via antaŭa fari. Vi povas redakti la mesaĝon la sama kiel ĉiam, sed overwrites via antaŭa fari.
Kiel ekzemplo, se vi faras kaj tiam rimarkas vi forgesis enscenigi la ŝanĝojn en dosiero vi volis aldoni al ĉi fari, Vi povas fari ion kiel jene:
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend
Post tiuj tri komandojn, vi finos kun sola fari - la dua faras anstataŭas la rezultoj de la unua. Unstaging enscenigita Dosiero
La venontaj du sekcioj pruvi kiel disputados via surscenigo spaco kaj laborante dosierujo ŝanĝoj. La bela parto estas ke la komando uzas por determini la staton de tiuj du areoj ankaŭ memorigas vin kiel malfari ŝanĝojn al ili. Ekzemple, diru vi ŝanĝis du dosierojn kaj volas fari ilin kiel du apartaj ŝanĝoj, sed vi hazarde tajpigit add * kaj enscenigi ilin ambaŭ. Kiel vi unstage unu el la du? La git status komando memorigas vin: $ git add . $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.txt # modified: benchmarks.rb #
Dekstra sub la "Ŝanĝoj esti internigita" teksto, ĝi diras "uzo git reset HEAD <file>... al unstage". Do, ni uzas tiun konsilon al unstage la benchmarks.rb dosieron: $ git reset HEAD benchmarks.rb benchmarks.rb: locally modified $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.txt # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: benchmarks.rb #
La komando estas iom stranga, sed ĝi funkcias. La benchmarks.rb dosiero estas modifita sed refoje unstaged. Unmodifying modifita Dosiero
Kio, se vi rimarkas ke vi ne volas konservi viajn ŝanĝojn al labenchmarks.rb dosieron?
Kiel vi povas facile unmodify ĝin - restarigu ĝin reen al kio ĝi
aspektis kiel kiam vi laste faris (aŭ komence klonita, aŭ tamen vi havas
ĝin en via labordosierujon)? Feliĉe, git status diras vin kiel fari tion ankaŭ. En la lasta ekzemplo eligo, la unstaged spaco aspektas jene: # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: benchmarks.rb #
Ĝi diras vin bela eksplicite kiel forĵeti la ŝanĝojn vi faris (almenaŭ,
la pli novaj versioj de Git, 1.6.1 kaj poste, do tio - se vi havas
malnovan version, ni forte rekomendas altgradiganta ĝi akiri iuj de ĉi
tiuj agrabla usabilidad karakterizaĵoj). Ni faras kion ĝi diras: $ git checkout -- benchmarks.rb $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.txt #
Vi povas vidi ke la ŝanĝoj estas revertido.
Vi devus ankaŭ rimarkas ke ĉi tiu estas danĝera komando: ĉiuj ŝanĝoj vi
faris al tiu dosiero estas for - vi ĵus kopiis alian dosieron pri ĝi. Ne ĉiam uzas tiun komandon se vi absolute scias ke vi ne volas la dosiero. Se vi nur bezonos akiri ĝin de la vojo, ni transiru stashing kaj branĉantaj en la sekva ĉapitro; tiuj estas ĝenerale pli bone manieroj iri. Memoru, ion kiu estas farita en Git povas preskaŭ ĉiam esti rekuperita. Eĉ faras kiuj estis sur branĉoj kiuj forigita aŭ interna kiuj anstataŭigataj per
--amend devigu eblas rekuperita (vidu Ĉapitro 9 por datumoj reakiro). Tamen, ion perdas, kiu estis neniam farita versxajne neniam esti vidita denove.
Nenhum comentário:
Postar um comentário