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.