Komandoj¶
Ĉi tiu paĝo estas praktika trairo de la komandoj, kiujn vi uzos ĉiutage. Por ĉiu: kion ĝi faras, la du aŭ tri opcioj kiujn vi vere uzos, kaj eta ekzemplo kun la eligo kiun vi povas atendi.
Vi ne bezonas parkerigi ilin — tenu ĉi tiun paĝon kiel referencon kaj la muskola memoro venos. La paĝo Ekzemplo poste kunligas ilin en kompletan laborfluon.
Konvencioj uzataj sube
La linioj komenciĝantaj per $ estas komandoj kiujn vi tajpas; ĉio alia estas
eligo. La vojoj kaj haketaĵoj venas el eta ekzempla projekto.
Ekigi deponejon¶
git init¶
Igas la nunan dosierujon Git-deponejo. Ĝi kreas kaŝitan dosierujon .git/, kiu
enhavas la tutan historion; viaj dosieroj restas netuŝitaj.
Ĉi tion oni faras unufoje, ĉe la komenco de projekto.
git clone¶
Kopias ekzistantan deponejon — inkluzive de ĝia tuta historio — al via maŝino. Tiel vi komencas labori pri projekto, kiu jam ekzistas (ekzemple, unu gastigata en GitHub).
$ git clone https://github.com/jparisu/nlp-esperantilo.git
Cloning into 'nlp-esperantilo'...
remote: Enumerating objects: 120, done.
Receiving objects: 100% (120/120), 45.2 KiB, done.
Klonado ankaŭ agordas remoton nomatan origin, kiu montras al la fonto, tiel
ke vi povas fari push kaj pull sen plia agordo.
Registri ŝanĝojn¶
git status¶
Montras la nunan staton: kiuj dosieroj ŝanĝiĝis, kiuj estas preparitaj por la sekva
commit, kaj kiuj ankoraŭ ne estas spurataj. Ĉi tiu estas la komando, kiun vi plej
ofte plenumas — kiam ajn vi dubas, plenumu git status.
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: README.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
no changes added to commit (use "git add" and/or "git commit -a")
git add¶
Movas ŝanĝojn al la prepara zono, por ke ili estu parto de la sekva commit.
La preparado estas tio, kio ebligas al vi fari commit-on de kelkaj el viaj ŝanĝoj
kaj lasi la reston: nur tio, kion vi add-as, eniras la commit-on.
git commit¶
Registras ĉion nun preparitan kiel novan commit-on, kun mesaĝo.
$ git commit -m "Add stop-word list"
[main 9f3a1c2] Add stop-word list
1 file changed, 42 insertions(+)
-m "…"donas la mesaĝon enlinie. Sen ĝi, Git malfermas redaktilon.- Verku la mesaĝojn en imperativo kaj tenu ilin signifoplenaj — vidu Organizado § Historio.
git commit -a
git commit -a preparas ĉiujn spuratajn dosierojn kaj faras la commit-on
en unu paŝo. Ĝi estas oportuna mallongigo, sed ĝi preterlasas la revizion kiun
donas la preparado, kaj ĝi neniam inkluzivas novajn (nespuratajn) dosierojn.
Preferu eksplicitan git add dum vi lernas.
Inspekti¶
git log¶
Legas la historion, la plej nova commit unue.
$ git log --oneline
772a47a Only test in python 3.11
a1976d8 Add PR documentation previews and the stop-word list
92c1041 Add project skeleton, documentation scaffold and CI
5f46a63 Add docs design
7b0978f Add README
--onelinedensigas ĉiun commit-on al unu linio — la plej utila ĉiutaga vido.--graph --oneline --alldesegnas la branĉan strukturon kiel ASCII-arton.-pmontras la plenan diff-on de ĉiu commit.
git diff¶
Montras la ŝanĝojn kiel diff-on. Sen argumentoj ĝi montras tion, kion vi ŝanĝis sed ankoraŭ ne preparis:
$ git diff
diff --git a/README.md b/README.md
index 3b1f2a1..a2c4d9e 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
# NLP Esperantilo
+A rule-based NLP library for Esperanto.
git diff --stagedmontras tion, kio estas preparita (t.e. tion, kion registros la sekva commit).git diff main featurekomparas du branĉojn.
Branĉigi kaj kunfandi¶
git branch¶
Listigas, kreas aŭ forigas branĉojn.
$ git branch # listigas; la nuna estas markita per *
* main
$ git branch feature # kreas branĉon nomatan "feature"
$ git branch -d feature # forigas jam kunfanditan branĉon
Krei branĉon ne ŝanĝas vin al ĝi — por tio, uzu checkout.
git checkout¶
Ŝanĝas inter branĉoj (kaj, pli ĝenerale, movas HEAD).
$ git checkout feature # ŝanĝu al ekzistanta branĉo
Switched to branch 'feature'
$ git checkout -b feature # kreu KAJ ŝanĝu en unu paŝo
Switched to a new branch 'feature'
git switch kaj git restore
La moderna Git dividis la du taskojn de checkout en pli klarajn komandojn:
git switch por ŝanĝi branĉon kaj git restore por forĵeti ŝanĝojn de
dosieroj. checkout ankoraŭ funkcias kaj estas tio, kion vi plej ofte vidos,
do ĉi tiu gvidilo uzas ĝin; restore estas traktata en
Malfari ŝanĝojn.
git merge¶
Integras alian branĉon en la nunan.
$ git checkout main
$ git merge feature
Updating 92c1041..9f3a1c2
Fast-forward
docs/git/commands.md | 120 +++++++++++++++++++++++++++
1 file changed, 120 insertions(+)
Se ambaŭ branĉoj ŝanĝis la samajn liniojn, la kunfando haltas kun konflikto por ke vi solvu ĝin — vidu la Ekzemplon.
Sinkronigi kun remoto¶
git push¶
Sendas viajn lokajn commit-ojn al la remoto (ekz. GitHub).
$ git push origin main
Enumerating objects: 5, done.
To https://github.com/jparisu/nlp-esperantilo.git
92c1041..9f3a1c2 main -> main
La unuan fojon kiam vi puŝas novan branĉon, uzu git push -u origin <branĉo>; la
-u memoras la ligon, do poste sufiĉas tajpi git push.
git pull¶
Alportas commit-ojn de la remoto al via nuna branĉo. Ĝi fakte estas du paŝoj en unu: fetch de la novaj commit-oj, poste merge de ili en vian branĉon.
$ git pull
Updating 9f3a1c2..b7d0e11
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Akiru la kutimon fari pull antaŭ ol vi komencas labori, por konstrui sur la plej lastaj ŝanĝoj de viaj kunlaborantoj anstataŭ sur malaktuala kopio.
Rapida referenco¶
| Komando | Por kio |
|---|---|
git init |
Krei deponejon en la nuna dosierujo. |
git clone <url> |
Kopii ekzistantan deponejon, kun ĝia tuta historio. |
git status |
Vidi kio ŝanĝiĝis kaj kio estas preparita. |
git add <vojo> |
Prepari ŝanĝojn por la sekva commit. |
git commit -m "…" |
Registri la preparitajn ŝanĝojn kun mesaĝo. |
git log --oneline |
Legi la historion. |
git diff |
Inspekti ankoraŭ nepreparitajn ŝanĝojn. |
git branch |
Listigi, krei aŭ forigi branĉojn. |
git checkout <branĉo> |
Ŝanĝi branĉon (-b por krei). |
git merge <branĉo> |
Integri branĉon en la nunan. |
git push |
Sendi commit-ojn al la remoto. |
git pull |
Alporti commit-ojn de la remoto al la nuna branĉo. |
Aliaj utilaj komandoj¶
git rebase <branch>— reorganizi commit-ojn por igi la historion pli lineara.git fetch— alporti commit-ojn de la remoto sen kunfandi ilin.git cherry-pick <hash>— apliki unu specifan commit-on el alia branĉo.
Aliaj komandoj por malfari ŝanĝojn estas traktataj en
Malfari ŝanĝojn: git restore, git reset, git stash.
La dosiero .gitignore¶
Ne ĉiu dosiero apartenas al la deponejo. Kompilitaj artefaktoj, virtualaj medioj, kaŝmemoroj kaj redaktilaj agordoj generiĝas loke kaj nur malordigus la historion (kaj kaŭzus konfliktojn), se ilin oni konfirmus.
Dosiero .gitignore, metita ĉe la radiko de la deponejo, listigas ŝablonojn de
dosieroj, kiujn Git devas ignori: ili neniam aperas en git status kaj ne povas
esti aldonitaj hazarde. Ĉiu linio estas ŝablono; # komencas komenton.
Jen la .gitignore, kiun uzas ĉi tiu sama projekto — bona deirpunkto por ajna
Python-projekto:
# Byte-compiled / optimized files
__pycache__/
*.py[cod]
# Packaging and build artifacts
build/
dist/
*.egg-info/
# Virtual environments
.venv/
venv/
env/
# Testing and coverage
.pytest_cache/
.coverage
# Notebooks
.ipynb_checkpoints/
# MkDocs output
site/
# Editors and OS
.idea/
.vscode/
.DS_Store
Tip
Aldonu la .gitignore antaŭ via unua commit, por ke la bruo neniam eniru la
historion unuavice. Se dosiero jam estas spurata, aldoni ĝin al .gitignore ne
forigas ĝin — vi devas fari git rm --cached <dosiero> unufoje.
Etikedoj kaj eldonoj (tags kaj releases)
Etikedi specifajn commit-ojn kiel versiitajn eldonojn estas reala funkcio de
Git, sed ĝi estas intence lasita ekster ĉi tiu gvidilo: por ĉi tiu projekto,
kompreni main kaj branĉojn sufiĉas.
Kien iri poste¶
- Malfari ŝanĝojn — kiam komando misfunkciis, aŭ vi ŝanĝis vian opinion.
- Ekzemplo — ĉi tiuj komandoj, aplikitaj de komenco ĝis fino.