Git Tutoriaal


Git en {{title}}


Git Dra by


Git Gevorderd


Git Undo




Git -tak


Werk met Git-takke

In Git is a branch'n nuwe/afsonderlike weergawe van die hoofbewaarplek.

Kom ons sê jy het 'n groot projek, en jy moet die ontwerp daarop bywerk.

Hoe sou dit werk sonder en met Git:

Sonder Git:

  • Maak kopieë van al die relevante lêers om te verhoed dat dit die lewendige weergawe beïnvloed
  • Begin met die ontwerp werk en vind dat kode afhang van kode in ander lêers, wat ook verander moet word!
  • Maak ook afskrifte van die afhanklike lêers. Maak seker dat elke lêerafhanklikheid die korrekte lêernaam verwys
  • NOODGEVAL! Daar is 'n onverwante fout iewers anders in die projek wat so gou moontlik reggemaak moet word!
  • Stoor al jou lêers en maak 'n aantekening van die name van die kopieë waaraan jy gewerk het
  • Werk aan die onverwante fout en werk die kode op om dit reg te stel
  • Gaan terug na die ontwerp en voltooi die werk daar
  • Kopieer die kode of hernoem die lêers, sodat die opgedateerde ontwerp op die lewendige weergawe is
  • (2 weke later besef jy dat die onverwante fout nie in die nuwe ontwerpweergawe reggestel is nie omdat jy die lêers voor die regstelling gekopieer het)

Met Git:

  • Met 'n nuwe tak genaamd new-design, wysig die kode direk sonder om die hooftak te beïnvloed
  • NOODGEVAL! Daar is 'n onverwante fout iewers anders in die projek wat so gou moontlik reggemaak moet word!
  • Skep 'n nuwe tak van die hoofprojek genaamd klein-fout-fix
  • Maak die onverwante fout reg en voeg die klein-fout-fix-tak saam met die hooftak
  • Jy gaan terug na die nuwe-ontwerp tak, en voltooi die werk daar
  • Voeg die nuwe ontwerptak saam met hoof (word gewaarsku oor die klein foutoplossing wat jy gemis het)

Takke laat jou toe om aan verskillende dele van 'n projek te werk sonder om die hooftak te beïnvloed.

Wanneer die werk voltooi is, kan 'n tak met die hoofprojek saamgevoeg word.

Jy kan selfs tussen takke wissel en aan verskillende projekte werk sonder dat hulle met mekaar inmeng.

Vertakking in Git is baie liggewig en vinnig!


Nuwe Git-tak

Kom voeg 'n paar nuwe kenmerke by ons index.htmlbladsy.

Ons werk in ons plaaslike bewaarplek, en ons wil nie die hoofprojek versteur of moontlik vernietig nie.

So ons skep 'n nuwe branch:

Voorbeeld

git branch hello-world-images

Nou het ons 'n nuwe branchgenaamd " hello-world-images" geskep

Kom ons bevestig dat ons 'n nuwe geskep het branch:

Voorbeeld

git branch
  hello-world-images
* master

Ons kan die nuwe tak met die naam "hallo-wêreld-beelde" sien, maar die *langskant masterspesifiseer dat ons tans op daardie branch.

checkoutis die opdrag wat gebruik word om 'n branch. Beweeg ons van die huidige branch, na die een wat aan die einde van die opdrag gespesifiseer word:

Voorbeeld

git checkout hello-world-images
Switched to branch 'hello-world-images'

Nou het ons ons huidige werkspasie van die meestertak na die nuwe geskuif branch

Maak jou gunsteling redigeerder oop en maak 'n paar veranderinge.

Vir hierdie voorbeeld het ons 'n prent (img_hello_world.jpg) by die werklêer gevoeg en 'n reël kode in die index.htmllêer:

Voorbeeld

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space"
style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>

</body>
</html>

Ons het veranderinge aan 'n lêer gemaak en 'n nuwe lêer in die werkgids bygevoeg (dieselfde gids as die main branch).

Gaan nou die status van die huidige na branch:

Voorbeeld

git status
On branch hello-world-images
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        img_hello_world.jpg

no changes added to commit (use "git add" and/or "git commit -a")

So kom ons gaan deur wat hier gebeur:

  • Daar is veranderinge aan ons index.html, maar die lêer is nie opgevoer vir commit
  • img_hello_world.jpgis nie tracked

Dus moet ons beide lêers by die Staging Environment voeg hiervoor branch:

Voorbeeld

git add --all

Deur --allin plaas van individuele lêername te gebruik, sal alle veranderde (nuwe, gewysigde en uitgevee) lêers verhoog .

Gaan die statusvan die branch:

Voorbeeld

git status
On branch hello-world-images
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    new file: img_hello_world.jpg
    modified: index.html

Ons is gelukkig met ons veranderinge. Ons sal hulle dus verbind tot die branch:

Voorbeeld

git commit -m "Added image to Hello World"
[hello-world-images 0312c55] Added image to Hello World
2 files changed, 1 insertion(+)
create mode 100644 img_hello_world.jpg

Nou het ons 'n nuwe branch, wat anders is as die meester branch.

Let wel: Deur die -bopsie op te gebruik checkout, sal 'n nuwe tak geskep word, en daarna beweeg, as dit nie bestaan ​​nie



Skakel tussen takke

Kom ons kyk nou net hoe vinnig en maklik dit is om met verskillende takke te werk, en hoe goed dit werk.

Ons is tans op die tak hello-world-images. Ons het 'n prent by hierdie tak gevoeg, so kom ons lys die lêers in die huidige gids:

Voorbeeld

ls
README.md  bluestyle.css  img_hello_world.jpg  index.html

Ons kan die nuwe lêer sien img_hello_world.jpg, en as ons die HTML-lêer oopmaak, kan ons sien die kode is verander. Alles is soos dit moet wees.

Nou, kom ons kyk wat gebeur wanneer ons van tak verander namaster

Voorbeeld

git checkout master
Switched to branch 'master'

Die nuwe beeld is nie deel van hierdie tak nie. Lys weer die lêers in die huidige gids:

Voorbeeld

ls
README.md  bluestyle.css  index.html

img_hello_world.jpgis nie meer daar nie! En as ons die HTML-lêer oopmaak, kan ons sien dat die kode teruggekeer word na wat dit was voor die verandering.

Sien jy hoe maklik dit is om met takke te werk? En hoe dit jou toelaat om aan verskillende dinge te werk?


Noodtak

Stel jou nou voor dat ons nog nie klaar is met hallo-wêreld-beelde nie, maar ons moet 'n fout op meester regmaak.

Ek wil nie direk met meester mors nie, en ek wil nie mors met hallo-wêreld-beelde nie, aangesien dit nog nie gedoen is nie.

Ons skep dus 'n nuwe tak om die noodgeval te hanteer:

Voorbeeld

git checkout -b emergency-fix
Switched to a new branch 'emergency-fix'

Nou het ons 'n nuwe tak van meester geskep, en daarna verander. Ons kan die fout veilig regmaak sonder om die ander takke te steur.

Kom ons maak ons ​​denkbeeldige fout reg:

Voorbeeld

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>

</body>
</html>

Ons het veranderinge in hierdie lêer aangebring, en ons moet daardie veranderinge aan die meestertak kry.

Gaan die status na:

Voorbeeld

git status
On branch emergency-fix
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

verhoog die lêer en pleeg:

Voorbeeld

git add index.html
git commit -m "updated index.html with emergency fix"
[emergency-fix dfa79db] updated index.html with emergency fix
 1 file changed, 1 insertion(+), 1 deletion(-)

Nou het ons 'n oplossing gereed vir meester, en ons moet die twee takke saamsmelt.

Toets jouself met oefeninge

Oefening:

Skep 'n nuwe tak genaamd hello-world-images:

git