суббота, 22 февраля 2014 г.

История гита, как не комитить то что не нужно

$ git config --global color.ui true
$ git log

$git log --pretty=oneline
08f2302691c4758475847584754dfgdf787 Commit message

$ git log --pretty=format: "%h %ad- %s [%an]"


placeholder replace with
%adauthor date
%anauthor name
%hSHA hash
%ssubject
%dref names




$ git log --oneline -p # показать patch - доесть что было добавлено, а что убрали
$ git log --oneline --stat # показать статистику сколько вставили и сколько строк удалили.
$ git log --oneline --graph # сизуальное представление сливание вранчев в мастера

Варианты как указать диапазоны изменения:
$ git log --until=1.minute.ago
$ git log --since=1.day.ago
$ git log --since=1.hour.ago
$ git log --since=1.month.ago --until=2.weeks.ago
$ git log --since=2000-01-01 --until=2012.12.21


$ git diff HEAD == $ git diff   # diff between last commit & current state
$ git diff HEAD^                     # parent of latest commit
$ git diff HEAD^^                   # grandparent of latest commit
$ git diff HEAD~5                   # five commits ago
$ git diff HEAD^..HEAD          # second most recent commit vs. most recent

$ git diff 43bn34bn3b4n3b4n34b..34nm3n4m34nm34nm34n     # range of SHAs
$ git log --oneline
237256c cat
4fv063f  Add index
f5a6ff9  Add catalog pages
$ git diff 4fv063f..f5a6ff9                                                        # range of abreviated SHAs
$ git diff master bird                                                              # diff betwen two branches
$ git diff master bird -- thefile.txt                                          # diff of concrete file between two branches
$ git diff --since=1.week.ago --until=1.minute.ago               # time-based diff


А вот как сделать то, что делает идея -- показать кто и когда написал строку в конкрнтном файле:
$ git blame index.html --date short
...
09dfg09d (Gregg 2012-06-29    9) <ul>
27dfg678 (Gregg 2012-06-29  10)     <li>Cats</li>
035ddaa4 (Jane    2012-06-30  11)   <li>Octopi</li>
Чтобы гит престал видеть некие файлы-папки нужно делать две вещи:

1) Добавить к ним путь или шаблоно для целого ряда в файл .git/info/exclude . Этот метод подходит для файлов, которые не попадут в удаленные репозиторий, а являются строго жителями данной локальной инстанции.
2) Для файлов, которые харакерны для всех учасников разработки, но у всех они свои нужно поступать чуть иначе, чтобы гарантировать, что новопришедшие пользователи не будут их случайно заливать в удаленный репозиторий. Такие файлы и шаблоны добавляются в .gitignore файл, который также комититься в репозиторий, его склонируют вместе с кодом и сразу исключат шанс свои локальные например логи закомитить в удаленку.

Удаление
Удалить и локально и из репозитория:
$ git rm README.txt
$ git commit -m "msg"

Перестать трекать файл, но не удалять из файловой системы(случайно зтреканный например лог файл):
$ git rm --cached development.log
Но после этого желательно добавить в гитигнор этот файл, чтобы его случайно снова не добавить.


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

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