Manu

Git Cheat Sheet: Niezbędne Komendy do Kontroli Wersji [Gotowa Ściągawka]

Git Cheat Sheet - Szybka Ściągawka
Podstawy Repozytorium
Opis Komenda / Przykład
Przejdź do katalogu, który ma być repozytorium: $> cd /srv/salt
$> ls
top.sls
curl
python
vmware
etc...
Dodaj plik Readme opisujący kod: echo "# Ubuntu configuration using SaltStack" >> README.md
Zainicjuj Git w katalogu: $> git init
Dodaj plik README do śledzenia: $> git add README.md
Zaznacz wszystkie bieżące pliki w `/srv/salt` do commitu: $> git add *
Dodaj wiadomość commitu: $> git commit -m "my first commit"
Dodaj zdalne repozytorium ORIGIN (GitHub): $> git remote add origin https://github.com/username/name-of-repo.git
Sprawdź skonfigurowane zdalne źródła: git remote -v
origin ssh://github...somerepo.git
Usuń zdalne źródło, jeśli to konieczne: git remote rm origin
Skonfiguruj zmienne globalne (email i nazwa użytkownika): $> git config --global user.email "your.email@email.com"
$> git config --global user.name "your-github-username"
Pobierz pliki z GitHuba do lokalnego repozytorium (aktualizacja): $> git pull origin master
Wyślij wszystkie lokalne pliki na GitHuba: $> git push -u origin master
Wprowadź zmiany lokalnie, zatwierdź je i wyślij ponownie: git commit -a -m "updated files"
git push origin master
Zmień nazwę gałęzi Git: git branch -m old_branch new_branch
# Zmień nazwę gałęzi lokalnie
git push origin :old_branch
# Usuń starą gałąź na zdalnym repozytorium
git push --set-upstream origin new_branch
# Wyślij nową gałąź, ustaw lokalną gałąź do śledzenia nowej zdalnej
Git Cheat Sheet: ZAAWANSOWANE
Opis Komenda / Przykład
Usuń lokalną gałąź: git branch -D <branchName>
Usuń wszystkie zmiany w bieżącej gałęzi: git clean -f -d
Usuń gałąź na zdalnym repozytorium (GitHub): git push origin --delete <branchName>
Zobacz wszystkie commity w gałęzi: git show-branch <branchName>
Pokaż wszystkie commity na zdalnym repozytorium: git log --oneline --no-merges origin/master --format="format:* %s" | sort
Cofnij dodane pliki (odwrotność 'git add'): git reset
Squash Commitów (łączenie wielu commitów w jeden):

git rebase -i origin/master
To otworzy edytor tekstowy (-i dla "interactive") z plikiem wyglądającym tak:

pick 16b5fcc Code in, tests not passing
pick c964dea Getting closer
pick 06cf8ee Something changed
pick 396b4a3 Tests pass
pick 9be7fdb Better comments
pick 7dba9cb All done

Zmień wszystkie "pick" na "squash" lub "s", z wyjątkiem pierwszego:

pick 16b5fcc Code in, tests not passing
squash c964dea Getting closer
squash 06cf8ee Something changed
squash 396b4a3 Tests pass
squash 9be7fdb Better comments
squash 7dba9cb All done

Lub użyj `delete`, aby całkowicie usunąć commit.
Zapisz plik i wyjdź z edytora.
Następnie otworzy się kolejny edytor tekstowy, aby połączyć wiadomości commitów w jedną dużą wiadomość commitu.
Skomentuj wiadomości commitów, których nie chcesz, zostaw 1 nieskomentowaną.
Zapisz i wyjdź: `:wq`

Zmodyfikuj wiadomość commitu ponownie: git commit --amend
Zmień wiadomość commitu: git commit --amend
Pokaż wszystkie commity i wiadomości w repozytorium: git log --oneline
Cofnij się do poprzedniego commitu (np. usuń ostatni commit z gałęzi Master):

git clone <path to repo>
Przejdź do gałęzi, którą chcesz zresetować, np. Master:
git reset --hard HEAD~1
Lub, aby zresetować do konkretnego ID commitu:
git reset --hard <commit ID>
Teraz wymuś push na zdalne repozytorium:
git push -f origin master
(Zezwól na force push na gałęzi, na GitHubie, jeśli zostanie odrzucony)

Wyczyść wszystkie niestagingowane zmiany w gałęzi (odrzuć zmiany): git clean -df
git checkout -- .
Wyłącz weryfikację SSL: git config --global http.sslVerify false
Stash zmian (jeśli wprowadziłeś zmiany na Master i musisz pobrać najnowsze commity z remote, ale nie chcesz stracić zmian):

(master) $> git stash
Saved working directory and index state WIP on master: d464b3a added image
HEAD is now at d464b3a added image
Przełącz na nową gałąź:
(master) $> git checkout -b "new_branch"
Przywróć zmiany do tej gałęzi:
(new_branch) $> git stash pop

Pobierz konkretną gałąź ze zdalnego repozytorium do lokalnego:

Pokaż wszystkie gałęzie, w tym ukryte:
get fetch
git branch -a
(pokazuje wszystkie gałęzie origin/*)
Aktywuj zdalną gałąź jako lokalną gałąź:
git checkout -b myNewBranch origin/myNewBranch

Git Cheat Sheet: PRZYKŁADOWY PRZEPŁYW
Opis Komenda / Proces
Git squash poprzednie commity w 1, wymuś push: git add --all
git commit -m "update"
git rebase -i origin/master
(wybierz "s" dla wszystkich commitów poza pierwszym, `:wq`, skomentuj wszystkie wiadomości commitów poza pierwszą)
git push -f origin mybranch
Usuń zdalną gałąź: git push origin --delete <nazwa_zdalnej_gałęzi>
Usuń całą historię commitów (w przypadku wycieku hasła do kodu):

Checkout:
git checkout --orphan latest_branch
Dodaj wszystkie pliki:
git add -A
Zatwierdź zmiany:
git commit -am "commit message"
Usuń starą gałąź:
git branch -D master
Zmień nazwę bieżącej gałęzi na master:
git branch -m master
Na koniec, wymuś aktualizację repozytorium:
git push -f origin master
Jeśli ostatni krok się nie powiedzie, przejdź do Gitlab > Repo > settings > Repository > protected branches > wyłącz ochronę gałęzi Master.

Pobierz wszystkie zdalne gałęzie lokalnie: for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do git branch --track "${branch##*/}" "$branch"; done
Przenieś wszystkie zmiany z gałęzi master do gałęzi roboczej: master> git stash
master> git checkout -b work
work> git stash apply

Brak komentarzy:

Prześlij komentarz