Smazání všech lokálních Git větví

Příkaz git branch zobrazí seznam všech lokálních větví.

Příkaz git branch -r zobrazí seznam všech remote (vzdálených) větví

Příkaz git brach -d nazev_vetve smaže uvedenou lokální větev (pokud již byla mergnutá)

Příkaz git branch -D nazev_vetve smaže uvedenou lokální větev (bez ohledu na její merge status, je to zkratka pro --delete --force)

Smazání všech větví s výjimkou větve s názvem dev se provede příkazem

git branch | grep -v "dev" | xargs git branch -d

Co znamená WIP v názvu větve

Pokud v rámci GitLabu nebo GitHubu nazvete větev s prefixem WIP a mezerou, půjde na tuto větev udělat merge request, ale nebude ji možné mergnout. WIP v tomto případě znamená Work In Progress. Tato vlastnost má výhodu v tom, že můžete ukázat aktuální stav ve své větvi tak, aby ostatní viděli vaše změny (diff), ale nechcete, aby tyto změny byly sloučeny (merge). Pokud byste vytvořili merge request a pouze tam přidali komentář, je možné, že by si ho někdo z kolegů nevšiml, a vaši práci mergnul.

Zdroj: stackoverflow.com/…/github-what-is-a-wip-branch

Smazání souboru v Gitu

V tomto příspěvku si ukážeme, jak smazat z Gitu nechtěný soubor tak, aby po něm nezůstala (ani po komitu) žádná zmínka.

Nejdříve si vytvoříme adresář a začneme jej verzovat pomocí Gitu.

$ mkdir git-reset-pokus
$ cd git-reset-pokus/
git-reset-pokus$ git init
Initialized empty Git repository in /home/vitfo/Documents/gitpokus/git-reset-pokus/.git/

git-reset-pokus$ ll
total 12
drwxrwxr-x 3 vitfo vitfo 4096 led 30 09:28 ./
drwxrwxr-x 3 vitfo vitfo 4096 led 30 09:28 ../
drwxrwxr-x 7 vitfo vitfo 4096 led 30 09:28 .git/

Jak je vidět na výpisu adresáře, přibyla nám po inicializaci skrytá složka .git. Vytvoříme prázdný soubor a komitneme změnu.

Číst dálSmazání souboru v Gitu

První nastavení gitu

Základní nastavení gitu je toto:

git config --global user.name "Moje Jméno"
git config --global user.email mujmail@example.cz

Pokud například nebudete mít nastaven email, nebudete moci komitovat změny:

fatal: unable to auto-detect email address

Příkaz git config -l (nebo –list) vypíše aktuální nastavení (viz zde).

Více informací o nastavení gitu: git-scm.com/book/cs…mu-Git

Git a chyba: Filename too long unable to checkout working tree

Při clonování úložiště můžete dostat chybu s hláškou "Filename too long unable to checkout working tree". Řešením je úprava konfigurace Gitu:

git config --system core.longpaths true

V případě, že dostanete další chybu (používáte Windows a git bash) a to "error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Permission denied" je třeba spustit textový editor jako administrátor -> otevřít soubor .gitconfig a přidat

[core]
 longpaths = true

Smazání několika větví najednou v Gitu

Příkaz git branch bez volby (nebo git brach --list) vrátí existující větve.

git branch --delete vetev

Smaže určenou větev.

git branch --delete vetev_1 vetev_2 vetev_3

Smaže všechny zadané větve.

git branch --delete `git branch | grep -E 'feature/*'`

Smaže všechny větve, jejichž název začíná na „feature/“ V případě, že někteřá z větví není zcela mergnutá, nebude vymazána (ostatní ano). Pokud si jste jisti a opravdu chcete smazat všechny je třeba zadat:

git brach --delete --force `git branch | grep -E 'feature/*'`

Volbu –delete –force je možná nahradit za -D, která má stejný význam.

Ikony na počítači s otazníkem

V případě, že se vám po instalaci či práci s Gitem (Git Bash), změní ikony v počítači tak, že obsahují otazník, je to pravděpodobně způsobeno složkou .git v adresáři uživatele (C:\Users\uzivatel). Složku .git stačí odstranit či přejmenovat a restartovat počítač.

Zdroj: stackoverflow.com…/git-for-windows-all-files-have-a-question-mark-on-the-icon

Commit failed with error v Idea IDE

Pokud při commitu změn pomocí Gitu v Idea IDE dostanete hlášku "Commit failed with error, 0 files committed, 186 files failed to commit ...", tak jedním z důvodů může být to, že změny nebyly přidány (staged) pomocí git add. Zkuste git status, který vám řekne více. Pokud změny nebyly přidány tak dostanete následující výpis:

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   ...

Pak je tedy potřeba git add * pro přidání všech souborů a následně by měl commit proběhnout v pořádku.