Instrukcje git
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Bartłomiej Kołodziej 47104a6ebb
Zaktualizuj 'README.md'
2 years ago
README.md Zaktualizuj 'README.md' 2 years ago

README.md

GIT instrukcja:

git config --global user.name <YOUR_NAME>
git config --global user.email <YOUR_EMAIL>
git config --global -l

Tworzenie nowego repozytorium z linii poleceń:

touch README.md
git init
git checkout -b main
git add README.md
git commit -m "first commit"

Wypychanie istniejącego repozytorium z linii poleceń:

git remote add origin https://gitea.raspinetwork.com/<Repo.git>
git push -u origin main

Przyklad połaczenie zmian z masterem:

-- zaczkładamy ze jestesmy na barnchu master
1. git checkout -b nasz_branch  --tworzymy nasz roboczy branch
2. touch plik.txt --dodajemy nowy plik
3. git add plik.txt --dodajemy plik go śledzenia gitea
4. git commit -am "nowy plik" --dodajemy commit 
5. vi plik.txt                  -- edytujemy plik
6. git commit -am "zmiana w pliku" --nastepny commit
7. git checkout master
8. git pull
9. git log --podejrzenie zmian commitow z mastera
10. git checkout nasz_branch
11. git log --podejrzenie naszych commitów
12. git rebase master  -- łaczenie naszych zmian z masterem //potencjalne konflikty
13. git checkout master
14. git merge nasz_branch -- łączenie dodanie naszych zmian na masterze

Przyklad 2:

    # Przełączanie się na główną gałąź
git checkout master
    # Pobranie najnowszych zmian z repozytorium zdalnego
git pull origin master
    # Utworzenie nowej gałęzi na bazie głównej gałęzi
git checkout -b nowa_funkcjonalnosc
    # Wprowadzenie zmian i zatwierdzenie ich
git add -u      
git commit -m "Dodano nową funkcjonalność X"
    # Pobranie najnowszych zmian z głównej gałęzi
git checkout master
git pull origin master
    # Zintegrowanie zmian z głównej gałęzi do naszej gałęzi
git checkout nowa_funkcjonalnosc
git merge master
    # Rozwiązanie konfliktów, jeśli wystąpią
    # Wprowadzenie dodatkowych zmian, jeśli to konieczne
    # Wysłanie zmian na zdalne repozytorium
git push origin nowa_funkcjonalnosc

Dobre praktyki:

1. Stosujemy Rebase dla liniowej historii commitów 
2. 

Zdalne Repo:

1. git remote -v    --podgląd 
2. git pull         --pobranie najnowszych zmian
3. git log          --podglad zmian
4. vi plik.txt      --zmiana w pliku
5. git add -u       -- dodanie wszystkich zmienionych śledzonych plików
6. git coomit -m "commit" --commit
7. git push         --wypchniecie  do zdalnego repo

Lista komend:

basics:

    git init  inicjalizuje repozytorium GIT w katalogu
    git clone {adres repozytorium}  klonuje repozytorium do katalogu
    git status  pokazuje status repozytorium (pokazuje informację o zmodyfikowanych, nowych, usuniętych oraz nie należące do repozytorium plikach)
    git add {ścieżka do pliku}  dodaje plik do repozytorium (np. git add folder/plik.php)
    git add -A  dodaje wszystkie nie należące do repozytorium pliki
    git config global color.ui auto  włącza koloryzowanie wyników w konsoli
    git config global core.pager '{nazwa}'  ustawia program do przeglądania logów (brak w konsoli)

repo:

    git fetch -p  kasuje branche już nie istniejąca na głównym repo
    git fetch {nazwa remota}  pobiera listę zmian z innego repozytorium (w tym pokazuje nowe gałęzie)
    git remote -v  lista repo
    git remote remove {repo}  usuwa wskazane repo
    git remote set-url {nazwa repo} {url}  zmienia adres dla podanego repo
    git remote add {jakaś nazwa} {adres repozytorium}  dodaje repozytorium innego użytkownika (git remote add upstream https://github.com/bluetree-service/idylla.git)
    git remote -v lista wszystkich zewnetrznych repozytoriów
    git remote rm {nazwa dla remota}  usuwa zewnętrzne repozytorium
    git pull  pobiera zmiany z aktualnej gałęzi
    git pull {nazwa gałęzi}  pobiera zmiany z wybranej gałęzi
    git pull {nazwa remota} {nazwa gałęzi}  pobiera zmiany z wybranej gałęzi wybranego zewnętrznego repozytorium
    git pull all prune  ściąga zmiany z repo + kasuje nieużywane branche
    git pull tags  ściąga tagi
    git push  wypycha zmiany na aktualnie wybraną gałąź
    git push {nazwa gałęzi}  wypycha zmiany na wskazaną gałąź
    git push {nazwa remota} {nazwa gałęzi}  wypycha zmiany na gałąź wskazanego repozytorium
    git push tags  wysyła tagi na repo
    git revert — {plik}  revert pojedyńczego pliku
    git reset soft HEAD^  cofa zmiany bez usuwania dodanych plików
    git reset soft {numer commita}  cofa zmiany bez usuwania dodanych plików do wskazanego commita (git reset --soft b87dcea)
    git reset hard {numer commita}  cofa zmiany włącznie z usunięciem plików do wskazanego commita (git reset --hard b87dced)
    git reset merge ORIG_HEAD  resetuje zmiany z ostatniego merg-a
    git checkout — {plik}  przywraca oryginalny plik
    git checkout {commit} — {plik}  przywraca stan pliku ze wskazanego commita
    git ls-files  lista plików z ich ścierzkami w repo (-md + zmodyfikowane i usunięte)
    git rm {plik}  kasuje z repo plik
git rm cached (plik/katalog)  usuwa plik/katalog z repozytorium, pozostawiając go na dysku -r  dla całych katalogów

commit:

git commit  tworzy commita z aktualnie zmienionych plików
git commit -m „wiadomosc”  tworzy commmita z podaną w cudzysłowach wiadomością
git commit amend -m „{wiadomość}”  umożliwia zmianę ostatniego commita
git commit amend -m „dsfsdf”  modyfikuje komentarz ostatniego commita
git commit date=”2017-08-18T13:23:41″ -m „”  comit ze wskazaną datą
git commit -n  pomija git hooks
git revert {numer commita}  tworzy nowego commita z cofnięciem zmian ze wskazanego commita
git amend  zmienia poprzedniego commita
git shortlog -sn  ile commitów zrobionych przez userów

log:

git log  wyświetla listę commitów (od najnowszego)
git log -{numer} wyświetla podaną liczbę ostatnich commitów
git log oneline  wyświetla commity w postaci skróconej
git log -{numer} oneline wyświetla podaną liczbę ostatnich commitów w postaci skróconej
git log graph decorate oneline  pokazuje graficzny obraz zmian
git log author={nazwa użytkownika}  pokazuje commity danego użytkownika
git shortlog  lista commitów użytkowników
git shortlog -s -n  lista użytkowników repozytorium
git llog after=2016-08-16 before=2016-08-30  commity z podanego zakresu (until starsze od podanej daty, since z pred podanej daty)
git log name-status  podaje statuz zmian przy nazwie pliku (add, mod, delete)
git log stat  + statystyki zmian w plikach (shortstat bez ++++—)
git log {commit1}..{commit} no-merges  pokazuje zmiany pomiędzy 2 commitami bez info o mergach
git log — {plik/katalog}  log dla pojedyńczego pliku lub wszystkich plików z katalogu
git log -5 pretty=tformat: numstat  satystyki zmian w 5 commitach
git log no-merges pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%Cgreen%d %Creset%s' date=iso 
git log pretty=format:'* %s (%an)' -n 10  pokazuje tylko nazwy commitów
git log pretty=oneline -15 | awk '{print $2}' | sort | uniq | grep -i {ticket} | sed 's/[(.*)]/\1/g'  pokaże tylko nazwy ticketów (gdy message zgody z formatem [NAME-111] some message)
git log grep {nazwa}  szuka commita zawierającego podany tekst
git log author={autor} name-only  pokazuje commity wykonane przez autora wraz ze zmodyfikowanymi plikami
git log master..develop  pokazuje różnicę między branchami
git log pretty=format:'%Cred%h%Creset %C(bold blue)<%an>%Creset%C(yellow)%d%Creset %Cgreen(%cr)%Creset%n%w(80,8,8)%s' graph  drzewko logów
git log pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%Cgreen%d %Creset%s' date=iso  pokazuje logi (hash, data+czas, autor, opis)
log pretty=format:'%C(yellow)%p..%h %C(white dim)%cd %<|(49,trunc)%an %C(reset)%s' date=short abbrev=8 no-merges  logi z zakresem branchy
git log oneline {branch1} not {branch2}  pokazuje różnice w commitach między branchami (branche których brakuje w branch2 a są w branch1)
git log oneline grep {branch} name-only | grep -v {branch} | sort | uniq  pokazuje tylko zmienione pliki dla podanego brancha

merge:

git merge {nazwa gałęzi}  dołączenie zmian ze wskazanej gałęzi
git merge {nazwa remota}/{nazwa gałęzi}  dołączenie zmian ze wskazanego remota i gałęzi
git merge abort  przerywa łączenie (możliwe, gdy wystąpią konflikty)
git merge continue  po rozwiązaniu konfliktów zapisuje zmiany
git merge revert  cofa wszystkie wprowadzone zmiany

rebase:

git rebase {nazwa gałęzi}  dołączenie zmian ze wskazanej gałęzi z zachowaniem kolejności wprowadzania zmian
git rebase {nazwa remota}/{nazwa gałęzi}  dołączenie zmian ze wskazanego repozytorium i gałęzi z zachowaniem kolejności wprowadzania zmian
git rebase abort  przerywa łączenie (możliwe, gdy wystąpią konflikty)
git rebase continue  po rozwiązaniu konflitów zapisuje zmiany
git rebase interactive {commit}  pozwala wybrać commity które zostaną dołączone (lub modyfikować)
git rebase interactive '{hash}^'  umożliwia edycję commitów do podanego hasha

diff:

git diff name-only {gałąź 1} {gałąź 2}  porównanie dwóch gałęzi
git diff cached  pokazuje wszystkie gotowe do commitu zmiany
git diff cached | grep -wi {fraza}  szuka podanej frazy w commicie
git diff cached | grep -wiHn -C 10 {fraza}  jw ale pokazuje 10 lini przed i po znalezieniu + numery linni i nazwę pliku
git diff name-only HEAD HEAD~14  pokazuje zmieniony pliki z 14 ostatnich commitów
git diff {commit1}..{commit2}  pokazuje różnicę między 2 commitami
git diff {commit1}..{commit2} {plik}  pokazuje różnicę między 2 commitami dla podanego pliku
git diff {commit} — plik  pokazuje zmiany w pliku od podanego commita
git diff-index name-only cached diff-filter=ACMR HEAD
git diff {commit}  różnica od podanego commita
git diff {gałąź 1} {gałąź 2} — {plik}  dif dla pojedynczego pliku między gałęziami
git diff {plik}  pokazuje zmiany dokonane na pliku (nie zacommitowane)
git diff .  pokazuje zmiany dokonane na wszystkich zmienionych plikach color-words  pokaże bez +/-
git diff -p -R no-color | grep -E „^(diff|(old|new) mode)” color=never | git apply  resetuje zmiany w atrybutach plików

show:

git show {commit}  szczegóły podanego commita
git show name-only {commit}  nazwy zmodyfikowanych plików w commicie
git show name-only {commit}  pokazuje tylko listę zmodyfikowanych plików z commita
git show {commit}  pokazuje zmiany w commicie
git show HEAD:{plik}  pokazuje zmiany tylko w konkretnym pliku
git show {commit} name-only -p -5  pokazuje 5 poprzednich comitów od podanego color-words  pokaże bez +/-

branch:

git branch  lista gałęzi w repozytorium
git branch -a  pokazuje listę wszystkich gałęzi (łącznie z tymi z repo, same z repo -r) -r  tylko gałęzie zdalne
git branch -d {nazwa gałęzi}  usuwa wskazaną gałąź
git branch merged  lista zmergowanych branchy
git branch merged | git branch -d  kasuje wszystkie zmergowane branche
git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d  kasuje wszystkie nie używane/ nie istniejące branche
git branch rename {1} {2}  zmiana nazwy brancha
git branch | grep -v „master” | xargs git branch -D  kasuje wszystkie branche z wyjątkiem mastera
git checkout {nazwa gałęzi}  przełącza na podaną gałąź
git checkout -b {nazwa gałęzi}  tworzy nową gałąź o podanej nazwie i automatycznie przełącza się na niego
git checkout -b {nazwa gałęzi} {nazwa remota}/{nazwa gałęzi}  tworzy nową gałąź o podanej nazwie, pobiera zmiany ze wskazanego repozytorium i gałęzi i automatycznie przełącza się na niego
git checkout {nazwa pliku}  cofa zmiany na podanym pliku
git branch rename {stara nazwa} {nowa nazwa}  zmiana nazwy brancha
git branch -m {stara nazwa} {nowa nazwa}  zmiana nazwy brancha

stash:

git stash  zapisuje nowe i zmodyfikowane pliki do pamięci podręcznej
git stash pop  przywraca zapisane pliki z pamięci podręcznej
git stash pop index 1
git stash pop index 454aa619
git stash pop index stash@{1}
git stash pop 1
git stash pop 454aa619
git stash pop stash@{1}
git stash save „{tekst komentarza}”  zapisuje stash z komentarzem
git stash show stash@{1} pokazuje zachowane zmiany
git stash list  lista zachowanych zmian
git stash branch {name}  stworzy nową gałąź, pobierze ostatnią wersję plików
git stash push -m {message} {plik}  stashuje z komentarzem wskazany plik

tag:

git tag -l  lista tagów
git tag -a {} -m '{}' 
git tag sort=v:refname | tail -2 | xargs printf „%s..%s” | xargs git log no-merges pretty=format:%s  wyświetla wszystkie commity między 2 ostatnimi tagami (| grep -o „SOC-[0-9]*” | sort unique**  tickety)
git tag -l „{pattern}”  lista tagów pasująca do wzorca
git tag -d {tag} && git push origin :refs/tags/{tag}  kasuje taga lokalnie + repo
git lasttag  pokazuje ostatniego taga

Inne:

git reset soft HEAD~3; git commit -m  pozwala na cofnięcie się 3 commity do tyłu, i połączenie ich w jeden (git commit amend)
git rebase -i {commit}  j/w ale commity wybierane ręcznie
git log -i -1 pretty=”format::%an <%ae>\n” author=”$1″  info o userze
git show -s pretty='tformat::%h (%s, %ad)' date=short  info o branchu
git log -a pretty=oneline | wc -l  ilość commitów
git fetch && git log oneline HEAD..origin/$1  ostatnie zmiany na podanym branchu
git shortlog HEAD..origin/$0  kto ostatnio robił zmiany i jakie

for branch in git branch -r | grep -v HEAD;do echo git show -s --format="%Cred%ci %C(green)%h %C(yellow)%cr %C(magenta)%an %C(blue)" $branch | head -n 1 \t$branch; done | sort -r jakie branche sa na orginie, jak dawno i kto je tworzył

Powered by TurnKey Linux.