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.

Změna posledního komitu v Gitu

V případě, že jste provedli uložení změn (commit) do svého lokálního úložiště (repository), stále je možné v tomto komitu provést změny, či jej vrátit zpět.

Změna textu zprávy (message) v posledním komitu
git commit --amend
Otevře textový editor, do něž je možné zadat změněný text.

git commit --amend -m "nový text"
Provede změnu textu bez otevření editoru.

Vrácení posledního komitu
Všechny změny provedené v komitu vrátí do stavu před komitem (stanou se z nich opět změny, které mají být komitnuty – „to be commited“)
git reset --soft HEAD~1

Smazání posledního komitu a všech změn, které byly v daném komitu provedeny
git reset --hard HEAD~1

Zapsání změn v Gitu jako někdo jiný

V Gitu při zapisování změn (commit) je možné určit autora. Jinak řečeno, je možné provést commit jako někdo jiný. To se může hodit v případě, že zapisujete změny někoho jiného a chcete, aby změny byly připsány tomuto autorovi (aby bylo vidět, že jejich autorem byl někdo jiný než vy).

git commit

Provede zapsání změn a za autora bude uveden ten, kdo je určen v souboru .gitconfig.

git commit --author="František Koudelka <fk@email.cz>"

Provede zapsání změn a za autora bude uveden „František Koudelka“.

git commit --amend --author="Jan Nový <jn@email.cz>"

Pozmění poslední commit a za autora bude uveden „Jan Nový“. Také se změní výchozí zpráva k revizi (commit message) za tu, která je zadána při tomto commitu.

V Idea IDE je také možné změnu autora provést při commitu.

git_zapsani_zmen_jako_nekdo_jiny_v_idee

Provede zapsání změn jako „Petr Zelený“.

V případě, že chcete změnit poslední commit, je třeba zaškrtnout volbu „Amend commit“.

git_zapsani_zmen_jako_nekdo_jiny_v_idee_02

Změní poslední commit tak, že bude obsahovat také nové změny a autorem bude „honzik“.