Notkun á .gitignore

Leiðbeiningar um notkun `.gitignore` í Git, hvernig á að koma í veg fyrir að viðkvæmar skrár lendi í geymslu og hvernig á að stilla sérsniðna `.gitignore` skrá.

.gitignore er skrá sem segir Git að hunsa ákveðnar skrár eða möppur þegar verið er að skrá breytingar í Git. Þetta kemur í veg fyrir að óþarfa eða viðkvæm gögn lendi í Git geymslunni.

Bæta við .gitignore í nýtt verkefni

Þegar þú býrð til nýtt repo á GitHub.com er hægt að velja að bæta við .gitignore skrá út frá ákveðnu forritunarmáli (t.d. Python, Node.js, C++ eða TeX). Hins vegar er aðeins hægt að velja eitt tungumál í þessu viðmóti, þannig að ef þú vinnur með mörg tungumál eða fleiri stillingar gæti verið þörf á að breyta skránni handvirkt.

Af hverju að nota .gitignore?

  • Koma í veg fyrir að viðkvæmar skrár séu geymdar í Git

  • Hindra óþarfa skrár (t.d. afleiddar skrár og log skrár) í að lenda í Git geymslu

  • Viðhalda hreinleika verkefnisins með því að hunsa skrár sem skipta ekki máli fyrir þróunina

Skrár sem ættu alltaf að vera í .gitignore

Viðkvæmar upplýsingar

Þetta eru skrár sem innihalda lykilorð, API lykla, og annað sem á ekki að birtast opinberlega.

  • .env skrár (t.d. config.env, .env.local)

  • SSH lyklar og cert skrár (t.d. id_rsa, id_rsa.pub)

  • JSON eða YAML skrár með lykilorðum

Afleiddar skrár og útgefnar skrár

Þetta eru skrár sem eru búnar til sjálfkrafa og ættu ekki að vera í Git geymslu.

  • Tímabundnar skrár og log skrár

    *.log
    *.tmp
    *.swp
  • Afleiddar bin skrár

    *.exe
    *.dll
    *.out
    *.o
  • Cache og háhraðaminni

    .cache/
    node_modules/
    __pycache__/

Sérstillt .gitignore eftir forritunarmáli

Python verkefni

__pycache__/
*.pyc
*.pyo
venv/

Node.js verkefni

node_modules/
package-lock.json
npm-debug.log

C/C++ verkefni

*.o
*.so
*.out
*.exe

TeX verkefni

*.aux
*.log
*.synctex.gz
*.toc
*.lof
*.lot
*.fls
*.fdb_latexmk

Hvernig á að bæta skrám við .gitignore?

  1. Búðu til skrána handvirkt (ef hún er ekki þegar til):

    touch .gitignore
  2. Opnaðu .gitignore og bættu við skrám sem á að hunsa.

  3. Staðfestu að skráin virki með:

    git status

    Skrár sem eru í .gitignore ættu ekki að birtast í úttaki git status.

Hvað ef ég gleymdi að bæta við .gitignore í upphafi?

Ef þú hefur þegar bætt við skrám sem ættu að vera í .gitignore, breytir það ekki sjálfkrafa því sem þegar er í geymslunni. Þú þarft að fjarlægja skrárnar handvirkt með:

 git rm --cached file_to_remove

Og svo skrá breytinguna:

 git commit -m "Bætti file_to_remove við .gitignore"

Að fjarlægja viðkvæmar skrár alveg úr Git sögunni

Ef skrá sem inniheldur viðkvæmar upplýsingar (t.d. lykilorð eða API lykla) hefur þegar verið sett í Git, þá er ekki nóg að eyða henni með git rm. Hún er ennþá aðgengileg í Git sögunni. Til að fjarlægja hana alveg:

 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <skrá>' --prune-empty --tag-name-filter cat -- --all

⚠️ Að framkvæma þessa aðgerð breytir Git sögunni og getur valdið vandræðum ef aðrir eru að vinna í geymslunni. Það er mælt með að nota BFG Repo-Cleaner fyrir einfaldari hreinsun á viðkvæmum skrám.

Þetta er aðeins fyrir þá Git-notendur sem vita hvað þeir eru að gera og hafa skilið afleiðingar þess. Passa þarf að allir sem vinna í geymslunni vita að þessi aðgerð er í gangi, annars getur það valdið verulegum vandræðum.

Þegar þú vilt bæta við skrá sem er í .gitignore

Ef þú þarft að bæta skrá sem er í .gitignore samt sem áður, þá færðu villu nema þú notar --force:

 git add -f file_to_include

Þetta er gagnlegt ef þú ert að vinna með undantekningar, en ætti að nota með varúð.

Samantekt

Skipun
Lýsing

touch .gitignore

Býr til .gitignore skrá

echo "*.log" >> .gitignore

Bætir við reglur í .gitignore

git rm --cached <skrá>

Fjarlægir skrá úr Git en ekki úr verkefninu

git add -f <skrá>

Bætir skrá við Git þrátt fyrir .gitignore

git status

Sýnir ekki hunsaðar skrár

git filter-branch --force --index-filter ...

Fjarlægir skrá alveg úr Git sögunni ⚠️

Með því að nota .gitignore skynsamlega tryggir þú að Git geymslan þín haldist snyrtileg og örugg 🚀

Last updated