Sytuacja kobiet w IT w 2024 roku
22.09.20225 min
 Agnieszka Piętka
Asseco Poland S.A.

Agnieszka PiętkaFull Stack DeveloperAsseco Poland S.A.

5 przykładów użycia Gita, które ułatwią Ci życie, cz. 1

Poznaj 5 przykładów, które mogą zmienić sposób, w jaki pracujesz z Gitem.

5 przykładów użycia Gita, które ułatwią Ci życie, cz. 1

Git jest jednym z najpopularniejszych dostępnych systemów kontroli wersji zaprojektowanym przez twórcę systemu Linux, Linusa Torvaldsa. Jest używany zarówno w systemach prywatnych, jak i publicznych witrynach internetowych do wszelkiego rodzaju prac programistycznych. Bez względu na to, jak biegle posługujesz się Gitem, zawsze znajdą się funkcje do odkrycia. Oto 5 przykładów, które mogą zmienić sposób, w jaki pracujesz z tym systemem.

1. Skopiowanie pojedynczego pliku z innego brancha 

Podczas pracy może się nam zdarzyć, że usuniemy jakiś plik lub wprowadzimy w nim mętlik i chcielibyśmy zacząć od początku. Może się też zdarzyć, że pracując na określonej gałęzi uświadomimy sobie, że potrzebujemy plik z innej gałęzi, którego u siebie nie mamy. Ta komenda pomoże nam pozyskać taki plik z innej gałęzi:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
$ git checkout release_5.59.3 -- projects/documents/src/app/modules/documents/components/zwrot-do-dost-panel/zwrot-do-dost-panel.component.ts


Aby skopiować wskazany plik z konkretnego commitu, należy użyć polecenia:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
$ git checkout 2657d3e -- projects/documents/src/app/modules/documents/components/zwrot-do-dost-panel/zwrot-do-dost-panel.component.ts

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
$ git status
On branch release_5.59.2
Your branch is up to date with 'origin/release_5.59.2'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   projects/documents/src/app/modules/documents/components/zwrot-do-dost-panel/zwrot-do-dost-panel.component.ts


Zamiast pojedynczego pliku możemy również pobrać cały katalog, podając do niego ścieżkę. Należy pamiętać, że wszystkie ścieżki są względne, więc jeśli nie jesteś w katalogu głównym repozytorium, musisz podać ścieżkę względną do swoich plików.

2. Poprawa ostatniej wiadomości commita

W codziennej pracy zdarza się czasem tak, że opis, który umieściliśmy w commicie, jest zbyt lakoniczny i chcielibyśmy go uzupełnić lub stwierdzamy, ze należy go całkowicie zmienić. Czasem zapomnimy o ważnej zmianie, która nie weszła do commita, a nie chcielibyśmy robić na nią osobnego. Wtedy z pomocą przychodzi komenda:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (issue/FS-12345)
$ git commit --amend
[issue/FS-12345 5bca6ccdb] new: Poprawa commanda (#FS-12345)
 Date: Mon Mar 8 08:19:47 2021 +0100
 1 file changed, 2 insertions(+)

3. Wyszukanie commita, który zawiera słowo-klucz

Jeśli potrzebujemy wyszukać konkretny fragmentu kodu, na którym były przeprowadzane zmiany lub chcemy znaleźć konkretne słowo-klucz, to możemy przeszukać dziennik według kodu z pomocą komendy:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (issue/FS-12345)
$ git log -S "prepareApDokViewInfoRequestBody.idMag"
commit 8c54da8462cd2e2ca2c93d99a37ebb53fac32c19
Author: Kamil.Majeranek <[email protected]>
Date:   Wed Apr 29 11:39:51 2020 +0200

    fs-24290
    stworzenie odpowiednika ShowAptekaDokumentyCommand

4. Wyświetlenie historii bez comitów z mergy (merge commits)

Commity po mergowaniu potrafią być denerwujące i czasem wyświetlając historię, wolelibyśmy ich nie widzieć. Jeżeli chcemy zobaczyć historię z odfiltrowanymi merge commitami, to możemy użyć komendy:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (issue/FS-12345)
$ git log --oneline --no-merges
5bca6ccdb (HEAD -> issue/FS-12345) new: Poprawa commanda (#FS-12345)
8cb5ae0af fix: Poprawa importów - budowa z prod
06f3d6f6c Merge branch 'bugfix/FS-51663' into 'FS-drugBase'
e8a00e5c4 fix: poprawa akcji Edytuj - stany mag (#FS-51663)
6d8f4459e CP and resolve conflicts
7f75e9d85 Merge branch 'bug/FS-50921' into 'FS-drugBase'
9b39ffd21 Merge branch 'ZAC3240824' into 'FS-drugBase'


Należy jednak pamiętać, że merge commity są ważną częścią historii naszego projektu i nie należy ich pomijać w workflow pracy.

5. Pozbycie się wszystkich nieśledzonych zmian

Jeśli utworzymy nowy plik, którego wcześniej nie było w historii gita, to dokonamy tzw. niezatwierdzonej zmiany. Aby git zaczął śledzić ten plik, należy go umieścić w repozytorium (wykonać commit). Zdarza się, że w połowie pracy zmieniamy koncepcję i chcemy się pozbyć wszystkich nieśledzonych plików i zacząć od nowa. Pierwszą myślą będzie użycie polecenia git checkout, ale to polecenie usunie tylko zmiany na śledzonych plikach, a reszta pozostanie. Z pomocą przychodzi polecenie:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
$ git status
On branch release_5.59.2
Your branch is up to date with 'origin/release_5.59.2'.

Untracked files:
 	 (use "git add <file>..." to include in what will be committed)
        	projects/documents/src/app/modules/documents/components/zwrot-do-dost-panel/

nothing added to commit but untracked files present (use "git add" to track)

        Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
        $ git clean -f -d
        Removing projects/documents/src/app/modules/documents/components/zwrot-do-dost-panel/

6. Tajna lista pomocnych komend

Na koniec ostatnia bardzo przydatna i oczywista komenda:

Agnieszka.Pietka@aps00082350-mb MINGW64 /c/Projekty/Flexit/module-pharmacy (release_5.59.2)
$ git help -g

The common Git guides are:
   attributes          Defining attributes per path
   cli                 Git command-line interface and conventions
   core-tutorial       A Git core tutorial for developers
   cvs-migration       Git for CVS users
   diffcore            Tweaking diff output
   everyday            A useful minimum set of commands for Everyday Git
   glossary            A Git Glossary
   hooks               Hooks used by Git
   ignore              Specifies intentionally untracked files to ignore
   modules             Defining submodule properties
   namespaces          Git namespaces
   repository-layout   Git Repository Layout
   revisions           Specifying revisions and ranges for Git
   tutorial            A tutorial introduction to Git
   tutorial-2          A tutorial introduction to Git: part two
   workflows           An overview of recommended workflows with Git

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.

Podsumowanie

Git to narzędzie, które jest pełne zgrabnych sztuczek ułatwiających nam codzienną pracę. Powyższa lista nie jest w żaden sposób wyczerpująca ani kompletna, więc warto samemu zagłębić się trochę w dokumentację gita.

Przeczytaj 5 kolejnych poleceń Gita, które warto znać w 2 części.

<p>Loading...</p>