Git
Инструкция по использованию git в качестве "машины времени" для фалов в текущем каталоге.
- при каждом изменении делается коммит
- всегда можно посмотреть список коммитов
- в любое время можно переключиться на любой предыдущий коммит и все фйлы в каталоге автоматически изменят свое состояние на момент создания коммита
- всегда можно вернуться к последнему по времени MASTER-коммиту
- переключения между коммитами делаются по хэшам этих коммитов (из списка коммитов)
1. Активируем git в текущем каталоге
git init Инициализированный пустой репозиторий Git в /home/administrator/git-test/.git/
2. Добавляем все файлы из текущего каталога в список подготовленных к комиту
git add .
3. Просматриваем состояние файлов, подготовленных к коммиту
git status В ветке master Заглавный коммит Изменения для закрепления: (используйте "git rm --cached <file>..." чтобы убрать из буфера) new file: gateway-client new file: nginx.conf new file: test.txt
3.1 В случае с появлением временных файлов, которые удалились после выполнение git add . удалите их командой
git rm <filename>
4. Делаем коммит
git commit -m "First commit" [master (root-commit) 78e180f] First commit 3 files changed, 216 insertions(+) create mode 100644 gateway-client create mode 100644 nginx.conf create mode 100644 test.txt
5. При каждом изменении файла в каталоге делаем коммит
nano test.txt git add . commit -m "Added some lines to test.txt" [master 47e2f1a] Added some lines to test.txt 1 file changed, 4 insertions(+) nano test.txt git add . git commit -m "Some more lines" [master 866354d] Some more lines 1 file changed, 6 insertions(+)
6. Просмотреть список всех коммитов можно коммандой
git log --pretty=oneline 866354dc0e13d97137d2dec471c1eb4f9da37f07 Some more lines 47e2f1adc0da8761c7d75eb366f8842b2505b83b Added some lines to test.txt 78e180f4bee99494af50721be1d79fa7b1ca1fb6 First commit
7. GIT использует два указателя на коммит
- HEAD - это плавающий указатель, определяющий из какого коммита состояние файлов доступно сейчас в каталоге
- MASTER - указатель "статичный", по которому всегда можно вернуться к последнему "по времени" коммиту. Если изменить положение указателя MASTER, то все коммиты "правее"="Новее" будут потеряны.
Для смены текущего состояния каталога следует менять положение указателя HEAD, а возвращаться к последнему состоянию следует переключением указателя HEAD на MASTER
7.1 Гуляем ко коммитам. Указываем нужный коммит по части хэша (весь хэш писать не обязательно)
git checkout 78e180 Note: checking out '78e180'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 78e180f... First commit
7.2 Возвращаемся к последнему состоянию
git checkout master Предыдущая позиция HEAD была 78e180f... First commit Перешел к ветке 'master'