Система контроля версий:
- Хранение
- Версионирование
- Файлов/объектов
- Состояний всего корпуса кода
- История изменений
- Возможно, нелинейная (орграф, точнее — сеть)
- Создание информационного пространства вокруг исходного текста
git init
в рабочей копии нет ни одного файла (вообще), но есть каталог .git, который является локальным полноценным git хранилищем
cal > cal.txt
git status
git нам скажет что у нас в каталоге среди рабочей копии появился файл и он Untracked.
git add cal.txt (git add -A)
git status
скажет нам что файл добавлен к отслеживанию (changes to be committed)
git commit -m "new calendar file"
git status
говорит что нет незакоммиченых изменений. Фактически мы будем воспроизводить цикл синхронизация - изменение - коммит
git log
git config core.editor 'ваш любимый редактор'отобразит commit id и commit message
может поменять редактор
git config --list
отобразит список настроек которые могут быть local и global. git config --local ... // git config --global ... // git config --local --unset --user.name
echo "change file" >> cal.txt
git status
знает что этот файл уже был добавлен в отслеживание и что он сейчас изменен но пока not staged for commit. Мы можем выбирать какие изменения в файле добавить в коммит. пока добавим все
git add cal.txt
git commit -m "new changes"
до этого момента мы делали модификацию своего собственного локального репозитория. чтобы опубликовать изменения нужно сделать git push
Историю коммитов можно посмотреть командой git log. Для того, чтобы отключить постраничный просмотр, используйте git -P log.
Посмотреть содержимое объектов можно (но непонятно, зачем ☺), например, так:
python3 -c "import sys; import zlib; print(zlib.decompress(sys.stdin.buffer.read()))" < .git/objects/8d/ccc7a1d248ea923156b2e762e576b44e07886a
- blob - это собственно наш файл в репозитории. Состояние файла на какой-то момент это не кусок файла не патч это именно файл целиком
- состояния файлов на какой-то момент объединяются в дерево tree. Дерево говорит, в вашей ветке разработки на данный момент присутствовали вот такие файлы (размер, права, имя файла и id)
- и собственно commit. Идентификатор дерева, id родительского коммита, имя автора и commit message
- для просмотра веток удобен qgit (или git log --graph --pretty=oneline --abbrev-commit --all)
- не обязательно складывать в один коммит все что нахакали, можно разделить на разные
смотрим все изменения
git commit --patch
показывает нам по одному hunk и спрашивает Stage this hunk? Таким образом можно разбить изменения на разные коммиты
git status
покажет нам какие изменения еще остались, которые можно посмотреть с помощью git diff
еще есть git add --interactive
Комментариев нет:
Отправить комментарий