Git przydatne komendy do codziennej pracy
Git jest to narzędzie do zarządzania repozytorium kodu, nad którym pracujemy. Powszechnie używany system kontroli wersji. Wiele osób na co dzień wykorzystuje tylko podstawowe komendy jednak to narzędzie ma masę innych, które musimy znać i biegle używać aby wydajnie programować.
Zapisywanie pracy, której jeszcze nie skończyliśmy
git rebase -i
Pojawi się notatnik z listą zmian. Słowo "squash" or "fixup" zamieniamy ze słowem pick, w miejscu wysłanej zmiany którą chcemy połączyć z ostatnią zmianą (na samej górze listy).
git stash
Stashowanie umożliwia zapisanie kodu, nad którym jeszcze pracujemy. Jest on na tyle niekompletny, że nie można go pokazać kolegom ale jednak chcemy go zachować lokalnie. Dzięki tej komendzie możemy zostawić jedną rzecz w trakcie i przeskoczyć do innej, która wymaga natychmiastowego naprawienia. Poniżej przykład użycia krok po kroku:
- Załóżmy, że mamy zmiany do zapisania aby sprawdzić jakie konkretnie wykonujemy komendę: git status
- Chcąc zapisać zmiany bez commitowania ich wykonujemy: git stash.
- Twoje lokalne repozytorium jest teraz bez żadnych zmodyfikowanych plików. Możesz rozpocząć pracę nad innym zadaniem. Możesz pracować na głównej gałęzi, przełączać się między gałęziami, tworzyć nowe itd.
- Domyślnie rzeczy zestashowane są definiowane jako WIP czyli work in progress
Co zrobić aby wrócić do pracy, którą pozostawiliśmy w trakcie?
Git stash jest tylko tymczasowym miejscem do przechowywania zmian. W przypadku gdy jesteśmy gotowi do kontynuowania zmian wykonujemy komendę: git stash pop. Przywraca ostatnio zestashowane zmiany.
Jeżeli lista zmian zawiera wiele pozycji, możemy wybrać konkretną za pomocą komendy:
git stash pop stash@{1} # gdzie stash@{1} oznacza konkretną pozycję.
Wyświetlanie listy zmian tymczasowych
Kiedy wykonasz komendę git stash system kontroli wersji Git utworzy obiekt z nazwą i zapisze go w lokalnym repozytorium. W celu wyświetlenia listy zapisanych rzeczy wykonujemy: git stash list. Wyświetli się lista zestashowanych rzeczy.
Łączenie wielu commitów w jeden po wysłaniu ich na serwer?
Najpierw przechodzimy na gałąź, na której chcemy połączyć commity wysłane na serwer zdalny.
git checkout my_branch
Łączymy ostatnie np. 4 commity za pomocą polecenia:
git reset --soft HEAD~4
Wysyłamy zmiany lokalnie. Pojawi się notatnik z możliwością wpisania nazwy commita łączącego ostatnie 4 commity.
git commit
Możemy też dodać parametr -m i od razu wpisać nazwę commita
git commit -m "Połączony commit gotowy do wysłania do głównego brancha"
Wysyłamy zmiany na serwer zdalny:
git push --force origin my_branch
src: https://stackoverflow.com/questions/5667884/how-to-squash-commits-in-git-after-they-have-been-pushed
Git rebase zamiast git merge!
W przypadku gdy pracujemy nad bardziej zaawansowanym projektem. Gdzie powstają w szybkim czasie gałęzie z nowymi funkcjami systemu, kod naprawiający niedziałające rzeczy itd. Warto zamiast komendy git merge użyć:
git rebase
Po zrobieniu zmian pamiętaj i ustawieniu HEAD na samym początku listy zmian. Niestety są pewne kłopoty w IntelliJ z ustawieniem go w odpowiednim miejscu. Aby to zrobić poprawnie, wykonaj komenndę:
git push --force-with-lease
Powoduje on wypushowanie zmian w trybie force jednak w przypadku zaistnienia konfliktów poinformuje Cię o tym. Jeżeli nie czujesz się pewnie z tą komendą poczytaj o niej więcej w internecie.
Więcej na temat stosowania komendy git rebase w IntelliJ możesz znaleźć tutaj: https://www.youtube.com/watch?v=dqVqMwLzOjU
Pozostałe przydatne komendy:
- tools
- init
- local add, commit
- what add means ?
- git interlnals
- git show
- shortcuts
- amend
- unstage
- unmodifing
- tag
- stash
- bare repo
- remotes
- clone
- branch
- merge
- diff
- clean-up
- fetch
- rebase
- configs
- ignores
- reflogs
- interactive-rebase
- bisect
- revert
- cherry-pick
- gitflow
Jak obsługiwać Git z poziomu interfejsu IntelliJ: https://www.jetbrains.com/help/idea/edit-project-history.html#squash-commits
Komentarze
Prześlij komentarz