git

Jak sprawdzić jakie znaki końca linii (Line Endings) są w zdalnym repozytorium

Posted on

Ustawić globalnie aby autoCrlf było takie że nic nie zmienia znaków końca linii (“core.autocrlf” is set to “false”).
Wywalić plik .gitattributes z repozytorium.

Sprawdzić co dostaniemy po git clone.

Advertisements

[GIT] Szybkie przechodzenie między repozytoriami w konsoli

Posted on

Idziemy do katalogu z zainstalowanym GITem do folderu etc (C:\Program Files\Git\etc).

Jest tam plik bash.bashrc.

Plik edytujemy jako administrator i na końcu dodajemy aliasy:

To samo można uzyskać na wiele innych sposobów (ten akurat działa w mojej konfiguracji systemu). Ten tutaj sprawia, przy otwieraniu konsoli gitowej dodane zostaną do basha aliasy. Dzięki temu możemy wyjść poza to co można dodać w .gitconfig i możemy korzystać z łączenia z komendami konsolowymi takimi jak grep w przykładzie.

Niech commit sobie odczeka

Posted on Updated on

Jako że korzystam z GITa mogę zrobić taki scenariusz:

– robię commit (kilka commitów)
– biorę się za nastepny task
– w międzyczasie pojawia się obiad
– wracam po obiedzie
– ściągam najnowszą histori i robię rebase moich commitów (‘git pull –rebase’, gdzie wystarcza ‘git pull’, bo opcja rebase mam defaultowo włączoną)
– przeglądam commity zanim je wpushuje !!! i tutaj dzieją się fajne rzeczy. Zauważam jakiś bug, zauważam czego zapomniałem, co mogę czytelniej napisać. I do publicznej historii trafia kod po prostu lepszy.

W tym przykładzie nieistotne jest czy pushuje bezpośrednio na brach “develop” czy tworzę branch pod PR i code review.

Git – bardzo duża zmiana/migracja/grzebanie w gównie – jak sobie poradzić

Posted on Updated on

Zaletą GITa jest commitowanie lokalne krok po kroku. Taki powtarzający się w kółko schemat:

– kodujemy kawałek
– sprawdzamy czy działa
– commitujemy (dodatkowo dając coś mówiący opis)

Gdy to coś co zmieniamy jest duuuże i trudno ogarnialne bo będą występować sytuacje gdzie:
– doszliśmy do miejsca, które jest ślepą uliczką – trzeba się wrócić kilka commitów bo w ten sposób “się nie da”
– inna rzecz się wywaliła która nie powinna – wtedy możemy przejść wstecz historię lokalnych commitów i zobaczyc w którym miejscu coś się wywala (jeszcze lepsze jest szukanie połówkowe git-bisect)

Use cases

Podniesie do kolejnej wersji GoogleMaps – kolega miał kiedyś coś takiego. Na starej stronie było GoogleMaps api w wersji 1, a Google zarzucił już wsparcie. Trzeba było podnieść do wspieranej wersji. Kod był taki, że można się ciąć – zero reużywalności kodu, logika JavaScript zawarta na stronach ASP.NET Web Forms (brak oddzielnych plików *.js). Coś napisanego ponad dekadę temu, nieużywanego od lat o czym wszyscy chcieli zapomnieć, a tu klientowi się wysypało i trzeba zrobić. Bez chodzenia krok po kroku, commit po commicie nie wyobrażam sobie tego zadania.

Migracja do Entity Framework Code First – też krok po kroku, wiele rzeczy może nie zadziałać, Research, poprawanie, etc.

Z jakim kodem zakończyć?

Na koniec gdy juz mamy ostateczny efekt możemy zrobić kilka rzeczy
– zrobić z tego jeden wielki commit – wygląda na brute force, ale nie jest to taka zła opcja. Oczywiście przeglądamy taki commit czy nie powinniśmy czegoś poprawić czy wyrzucić.
– powiązać commity w sensowe kilka commitów zmieniających jakieś oddzielne componenty – jest to trudniejsze, bo wymaga wprawy w operowaniu gitem.

GitKraken – wreszcie dobry UI dla GITa

Posted on

Wreszcie jest dobry klient GITa dla klikaczy – https://www.gitkraken.com. Dopiero co wystartowała wersja 1.0. Więc jeszcze nie ma wszystkich feature które ma np Source Tree, jak na przykład “rebase interactive”, ale wkrótce zostaną dodane. Myślę tutaj o takich bardziej zaawansowanych rzeczach bo do zwykłej pracy jak commit, amend, przechodzenie między branchami, cherry-pick, przeglądanie historii, stage wybranych fragmentów pliku nadaje się znakomicie.

Instalacja

Ściągamy najnowszą wersję i konfigurujemy. W zasadzie konfiguracja sprowadza się do wpisania emaila i nazwy użytkownika. Pozostałe rzeczy warto przeklikać tam gdzie nas prowadzą strzałki tylko po to żeby wiedzieć później że takie ustawienia są. Nie przejmujemy się niczym więcej.

Czy jest darmowy

Na tą wersję tak. Kod nie jest open source. Jak sama firma o tym pisze to pewnie kiedyś zrobią wersję płatną która będzie mieć dodatkowe bajery. Zakładam więc, że dla zwykłych zastowowań (czyli i tak 300% tego użytkownik co SVN wie o sposobach pracy z kodem), wersja zawsze będzie darmowa.

Git – czasem dopiero po chwili wiesz jak dobrze nazwać

Posted on Updated on

Tak najpierw nazwałem commity:
Install angular
AngularJS TypeScript typings
Update jQuery definitions for TypeScript

A później samo do mnie doszło że lepszymi nazwami będzie:
Install angular with TypeScript typings (z połączenia dwóch pierwszych)
Update jQuery definitions for TypeScript

Dzięki funkcjonalności rebase interactive możemy pozmieniać nazwy (posklejać commity), aby było to bardziej sensowne. Opisuję jak to wyklikać z GUI.