Git

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску

Инструкция по использованию 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'