вторник, 5 апреля 2011 г.

Настройка git для домашних нужд.

Git у меня используется для хранения текста диссертации (LaTeX). Один репозиторий хранится на github.com, второй на флэшке.  Ну и конфиги хранятся под git'ом. Далее приведу мой конфиг для git`а и как с этим жить.

Собственно ~/.gitconfig:


[user]
        name = Sergey Lyubimov
        email = lysevi@mail.com
[color]
        ui = auto
        status = auto
        diff = auto
        branch = auto
[alias]
        st = status
        ci = commit
        co = checkout
        pa = push --all
        pt = push --tags
        out=log origin/HEAD..master
        dc=diff --color-words
        undo=reset --hard HEAD
        mergeff=merge --no-ff
[pack]        threads=5

 Подробнее о каждой секции:
В секции [user] указывается имя и e-mail пользователя (как это не странно).
В секции [color] включена подсветка для консоли. Сам я ничем кроме консоли и git-gui не пользуюсь, поскольку команды просты и удобны, а gui только путает.
Секция [alias] - самое интересное тут. Для каждой команды можно назначить псевдоним, что не только упрощает жизнь, но и позволяет автоматизировать некоторые рутинные операции.
Если вы измените одно слово в тексте, то из git-diff  можно и не заметить изменений (особенно, если в тесте поменялось не слово, а буква в слове).

diff --git a/f.txt b/f.txt
index 5ac883a..83da015 100644
--- a/f.txt
+++ b/f.txt

@@ -1 +1 @@
-Мама мыла раму
+Мама била раму

Чтобы этого избежать, был введен алиас dc. Вот как выглядит вывод команды git dc в аналогичной ситуации:

diff --git a/f.txt b/f.txt
index 5ac883a..83da015 100644
--- a/f.txt
+++ b/f.txt

@@ -1 +1 @@
Мама мылабила раму

Немного понятней, не правда ли (если не считать странностей мамы) :)

Команда mergeff введена для того, чтобы при объединении веток, git показывал места слияний, а не объединял их линейно (git help merge), при таком слиянии мы никогда не потеряем точку в истории, где конкретно произошло слияние.

Команда out выводит список изменения, который не были отправлены в центральный родительский репозиторий.

В секции [pack] настройки для команды git-repack. По умолчанию она выполняет свои действия в один поток, что не слишком логично для современных 4-N ядерных процессоров.

А как с этим жить расскажу в другом посте ;)

Комментариев нет:

Отправить комментарий