abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:33 | IT novinky

    Google představil telefon Pixel 10a. S funkci Satelitní SOS, která vás spojí se záchrannými složkami i v místech bez signálu Wi-Fi nebo mobilní sítě. Cena telefonu je od 13 290 Kč.

    Ladislav Hagara | Komentářů: 0
    dnes 16:22 | Komunita

    Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Fedora 43 Asahi Remix s KDE Plasma už funguje na M3. Zatím ale bez GPU akcelerace. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    dnes 14:00 | IT novinky

    Red Hat představil nový nástroj Digital Sovereignty Readiness Assessment (GitHub), který organizacím umožní vyhodnotit jejich aktuální schopnosti v oblasti digitální suverenity a nastavit strategii pro nezávislé a bezpečné řízení IT prostředí.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Zajímavý software

    BarraCUDA je neoficiální open-source CUDA kompilátor, ale pro grafické karty AMD (CUDA je proprietární technologie společnosti NVIDIA). BarraCUDA dokáže přeložit zdrojové *.cu soubory (prakticky C/C++) přímo do strojového kódu mikroarchitektury GFX11 a vytvořit tak ELF *.hsaco binární soubory, spustitelné na grafické kartě AMD. Zdrojový kód (převážně C99) je k dispozici na GitHubu, pod licencí Apache-2.0.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 17:00 | IT novinky

    Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.

    Ladislav Hagara | Komentářů: 4
    včera 15:44 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Nová verze

    Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.

    Ladislav Hagara | Komentářů: 25
    včera 02:00 | Zajímavý článek

    Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.

    … více »
    Ladislav Hagara | Komentářů: 4
    16.2. 22:55 | Nová verze

    Byla vydána verze 0.5.20 open source správce počítačových her na Linuxu Lutris (Wikipedie). Přehled novinek v oznámení na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    16.2. 12:44 | IT novinky

    Peter Steinberger, autor open source AI asistenta OpenClaw, nastupuje do OpenAI. OpenClaw bude převeden pod nadaci a zůstane otevřený a nezávislý.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (26%)
    Celkem 899 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    git – jak udělat commit dílčí změny

    4.11.2021 13:30 | Přečteno: 1473× | Za vším hledej Linux | poslední úprava: 4.11.2021 13:32

    Potřeboval jsem po delším čase přejet nějaké soubory přes svůj skript djvutool, když tu na mě začala konzole opět pindat, že příkaz tempfile je deprecated, tak abych místo něj použil mktemp. Ok. Tak jsem skočil do repozitáře kde ho mám a zjistil, že jsem do něj už v minulosti udělal několik drobných změn, které jsem ale necommitoval. Byly to drobné úpravy, ale vzájmně nesouvisely. Tak jsem je chtěl commitnout samostatně.

    Nebylo to poprvé, co jsem někde něco ladil a při tom nadělal víc změn, které by zasluhovaly samostatný commit. Ostatně, víc jsem se o tom rozkecal v blogpostu na téma Počítačová archeologie. Zkrátka jsem se dopálil, že takhle už to dál nejde a obrátil se na Pavla Píšu, který má přeci jenom s gitem víc zkušeností než já.

    Zajímalo mne vyloženě konzolové řešení a tak mne překvapilo, že pro commitování takových dílčích změn používá git gui. Nicméně do háje mne neposlal, nýbrž odkázal na stránku Git Tools - Interactive Staging, kde bylo přesně to co jsem hledal.

    Jako obvykle, je to stupidně prosté a z mého pohledu dokonce mnohem lepší řešení než přes grafické klikátko. Takže to popíšu jen několika slovy a odkážu na ilustrační screenshot v příloze.

    1. Dílčí změny lze přidávat v interaktivním režimu, který se aktivuje volbou -i
      $ git add -i
    2. Pokud čekají na commit nějaké změny, spustí se automaticky příkaz [s]tatus, který vypíše přehled souborů ve kterých jsou nějaké změny co čekají na commit.
      Stiskem klávesy p, nebo odentrováním čísla 5, se spustí příkaz [p]atch, který opět vypíše přehled souborů, ve kterých jsou změny.

      Po uvedení pořadového čísla souboru a jeho odklepnutí, začne vypisovat dílčí rozdílové soubory, s tím, že se pokaždé zeptá co s tím. Na ilustračním screenshotu tak můžete vidět, že jsem přeskočil všechny změny, až na tu poslední, kterou jsem vložil do stage

      Před ukončením jsem příkazem [d]iff překontroloval, že změna připravená ve stage, obsahuje to co jsem chtěl commitnout. A protože vše bylo ok, mohl jsem interaktivní mód pro přidání změn ukončit příkazem [q]uit.
    3. Ještě jsem se ujistil, že se bude commitovat pouze část změn.
      $ git status
      On branch master
      Your branch is ahead of 'github/master' by 15 commits.
        (use "git push" to publish your local commits)
      
      Changes to be committed:
        (use "git restore --staged <file>..." to unstage)
              modified:   djvutool
      
      Changes not staged for commit:
        (use "git add <file>..." to update what will be committed)
        (use "git restore <file>..." to discard changes in working directory)
              modified:   djvutool
      
      Untracked files:
        (use "git add <file>..." to include in what will be committed)
              COPYING
              djvu_foreground_encoding_examples.txt
              djvuchanges.txt
              djvutosvg_poznamky.txt
              historie_djvu_wiki.txt
              wiki-djvu.txt
      
      
      A teprve pak přišel na řadu commit připravené stage
           

    Hodnocení: 67 %

            špatnédobré        

    Obrázky

    git – jak udělat commit dílčí změny, obrázek 1

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    4.11.2021 15:21 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Toto používám celkem často (nadělám změny třeba ve více nesouvisejících souborech a až potom je po kouskách commituji). Pokud ale třeba mám necommitované změny a chci provést jinou, nesouviseící, změnu, tak používám git stash (uložení rozpracovaného stavu na zásobník, vrátí se to git stash pop) a commituji potom.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    4.11.2021 16:36 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Tak tohle je určitě dobré při práci. Mně se častěji stává – a netýká se to zrovna programování zdrojového kódu – že něco dělám, přijde někdo kdo mne vyruší s tím, že mám jít udělat něco jiného a pak už ten commit neudělám protože se k tomu nedostanu, nebo na to zapomenu. Když o nic nejde, commitnu to pak později i s jinými změnami. Také se mi nechce commitovat každou dílčí změnu. Dřív jsem to takhle dělal ale pak už jsem se ztrácel v tom, která změna byla ok, a která se ukázala jako slepá cesta.
    4.11.2021 18:11 podlesh
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Proto zásadně používám PS1 se scriptem zobrazujícím stav git repository a pokud někde vidím že je cokoliv necommitnuto, tak nedělám další změny než provedu commit. I kdyby to mělo být jenom git commmit -a -m 'WIP'
    4.11.2021 20:19 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Bohužel, ne vždy realizovatelné. Nejsem vývojář co by se věnoval pouze prgání.
    4.11.2021 20:30 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Já se stashování odnaučil a radši udělám nějaké WIP commity a pak si to přeházim/transformuju rebasem do správný podoby. Přijde mi, že Super jsou na tohle fixup commity (+ následně rebase --autosquash), akorát si člověk musí dát pozor, aby neopakoval stejnou commit message vícekrát, protože fixup commit se váže na commit message, ne na hash (což mi přijde jako blbý rozhodnutí, ale nic s tim neudělám).

    git add -i je určitě fajn, ale git gui umožňuje stagovat s vyšší granularitou (jednotlivé řádky).
    4.11.2021 20:30 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    *Přijde mi, že stash zbytečně neumožňuje běžné operace jako branching atd.
    4.11.2021 23:05 xxx
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    protože fixup commit se váže na commit message, ne na hash (což mi přijde jako blbý rozhodnutí, ale nic s tim neudělám).
    Protoze to ma implikace, ze pak musis umet ty fixup commity mit svazane s tim fixovanym, i kdyz udelas treba rebase bez toho autosqashe, atp. A muj tip je, ze kdyz se tim smerem vydas, tak skoncis zpatky ve stavu, ze ktereho si vysel. Ze nejjednodusi (mozna i jedinny) zpusob, jak toho dosahnout, je normalni commit se specialnim jmenem.

    A trochu se obavam, ze neco podobneho by se ti stalo i s tim zasobnikem, kde by to vlastne bylo to same akorat by to byla fixup vetev.
    5.11.2021 11:32 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Protoze to ma implikace, ze pak musis umet ty fixup commity mit svazane s tim fixovanym, i kdyz udelas treba rebase bez toho autosqashe, atp.
    Rebase by to mohl celkem snadno umět aktualizovat, stejně už IIRC upravuje časový razítko u všech commitů... A u nějakýho jinýho způsobu úpravy historie by to bylo holt na tobě.

    Ale souhlasim, že to je implementačně/koncepčně složitější...
    5.11.2021 09:31 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    akorát si člověk musí dát pozor, aby neopakoval stejnou commit message vícekrát

    Celý commit message stejný, to je při rozumně napsaných prakticky nemožné, pokud nejde o cherry pick. I úplně stejný subject je na pováženou, pokud je to v jedné sérii.

    5.11.2021 11:36 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    U finálních, slušně naformátovaných samozřejmě jo, měl jsem na mysli situaci, kdy mam rozdělanou nějakou práci lokálně a dělám commity á la "WIP něco něco", kde typicky tam dám jenom hodně stručnou sumarizaci, třeba jméno modulu/funkce apod., takže když pak pokračuju v tom samým, commit message má tendenci být stejný... takže tam dávám třeba číslo nebo něco...
    cezz avatar 4.11.2021 23:58 cezz | skóre: 24 | blog: dm6
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Ja tieto ciastocne commity vyuzivam velmi casto - napriklad na to, ked chcem oddelit funkcne zmeny v kode od uprav citatelnosti do samostatnych commitov. Lahsie sa potom robi review PR.

    A musim povedat, ze v tomto smere je Magit v Emacse naozaj magicky. Clovek poste v diff view vyznaci konkretne zmeny a stlaci stage. V tomto konkretnom pripade by bol napriklad problem s git add -i commitnut samostatne len niektore riadky z prveho hunku a asi by bolo treba pouzit git add -e, co uz zacina byt trochu komplikovane.

    Neverim, ze niekto kto pouziva Emacs este o Magite nepocul, ale ak niekto uvazuje Emacs skusit, tak uz len pre ten Magit by som odporucal tomu dat sancu napriklad s niecim ako Doom Emacs.
    Computers are not intelligent. They only think they are.
    5.11.2021 08:00 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Musím se přiznat, že jakkoli pro tyhle účely většinou preferuji textové rozhraní, "git add -i" mi k srdci nepřirostl a i když jsem se mu párkrát snažil dát šanci, "git gui" je z hlediska uživatelského komfortu úplně jiná liga.
    5.11.2021 08:19 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Vzhledem k tomu že 90% času tohle potřebuji řešit na vzdáleném stroji s minimalistickou instalací, je pro mne cokoliv závislé na okením prostředí nepoužitelné.

    Stejně tak nemám zapotřebí řešit jednotlivé řádky. Důležitý je pro mne commit komplexní změny. Situace že by se mi těsně vedle sebe sešly dvě různé věci, tak že by je bylo nutné separovat po řádcích, je pro mne velmi nepravděpodobné.
    5.11.2021 09:25 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    90% času tohle potřebuji řešit na vzdáleném stroji s minimalistickou instalací

    Pak je asi na místě otázka, jestli je rozumné ten git spouštět přímo tam. Já jsem třeba poměrně dlouho z lenosti z domova používal git na počítači v práci (včetně "git gui" přes "ssh -X") a teprve to, že jsem dočasně musel používat jiný VPN endpoint, a s tím související nárůst latencí mne donutil zařídit si to tak, abych tohle dělat nemusel. S odstupem času je to samozřejmě praktičtější, ale kdyby mne k tomu nedonutily okolnosti, nejspíš bych to tím krkolomným způsobem dělal dodnes.

    Situace že by se mi těsně vedle sebe sešly dvě různé věci, tak že by je bylo nutné separovat po řádcích, je pro mne velmi nepravděpodobné.

    Mně se to naopak děje docela často. Což ale možná souvisí s…

    Důležitý je pro mne commit komplexní změny.

    Commit by právě pokud možno moc komplexní být neměl. Naopak, měla by to být co nejmenší změna, která sama o sobě ještě dává smysl. Jak kdysi podotkl jeden maintainer, pokud píšete commit message a chystáte se začít větu slovem "Also", je to obvykle znamení, že byste měl commit rozdělit.

    5.11.2021 11:19 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Pak je asi na místě otázka, jestli je rozumné ten git spouštět přímo tam.
    To teda rozhodně je ;-) Je to nejrychlejší způsob, jak zjistit jestli, nebo kdy někde nastala nějaká nežádoucí změna. Často toho využívám při dohledávání změn realizovaných někdy v minulosti.
    5.11.2021 11:22 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    A komplexní znamená několik souvisejících změn na různých místech. Ne sadu různých, vzájemně nesouvisejících změn. Právě o tom, jak se tomu vyhnout, je tenhle blogpost.
    dolik.rce avatar 5.11.2021 18:00 dolik.rce
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Vida, git add -i jsem ani neznal. Osobně používám git add -p (případně i s cestou), který spustí rovnou tu interaktivní "patchovací" část.
    7.11.2021 10:55 ttttttttttt
    Rozbalit Rozbalit vše Re: git – jak udělat commit dílčí změny
    Používám https://github.com/bigH/git-fuzzy založený na fzf, výborný pokud jsou změny v různých souborech. Pro stejný soubor pak taky interaktivní git.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.