Git: Всякое


Что ещё есть в git?

gitrepository-layout(5) рассказывает, что ещё есть такие вещи:

  • .git/objects/pack хранит заархивированные, ужатые версии объектов.
  • .git/packed-refs хранит сжато в себе часть сведений из .git/refs, если тех накопилось слишком много.
  • Всякое.

git-stash

Команда git-stash(1) позволяет быстро создать новый (не относящийся ни к какой ветке) коммит, в котором будут храниться изменения, находящиеся сейчас в рабочем дереве; она же позволяет быстро достать изменения оттуда и положить их снова в рабочее дерево.

git stash хранит указания на свои коммиты в .git/refs/stash. Можно иметь более одного stash-а — тогда все, кроме последнего, будут храниться в reflog.


git blame

Команда git-blame(1) показывает кто и когда изменял конкретные строки файла.

При командной работе бывает весьма полезной: можно быстро выяснить кому задавать вопросы про вот этот кусочек кода.


git bisect

git-bisect(1) — команда, позволяющая с помощью бинарного поиска отыскать коммит, в котором впервые появился баг.


git submodules

Submodules — механизм git, позволяющий отсылаться к содержимому других репозиториев (с другими проектами) из данного. Например, можно положить как submodule в свой репозиторий какую-нибудь библиотеку, исходники которой нужны для сборки.

Репозитории для submodule хранятся в .git/modules; описания submodule — в .git/config. В index и в tree-объектах хранится запись о директории submodule, где в качестве хэша указан хэш коммита в репозитории данного submodule. Список этих хэшей можно ув


Полезные ссылки

  • Pro Git — подробная и честная книга про git,
  • git guide — шпаргалка по git,
  • Git Notes for professionals — сборник рецептов на все случаи жизни, регулярно упоминаются полезные трюки,
  • git branches: intuition & reality — очередное объяснение, что интуиция с гитом работает плохо, лучше знать как он устроен внутри.