Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VCS

Avatar for Mike Yumatov Mike Yumatov
September 27, 2012

 VCS

Avatar for Mike Yumatov

Mike Yumatov

September 27, 2012
Tweet

More Decks by Mike Yumatov

Other Decks in Programming

Transcript

  1. VCS «Cтуденческая» # def find(path): # for matched_path in find_all(path):

    # return matched_path # raise FileNotFound(path) def find_all(path): # result = [] for root in locations: # matched_path = os.path.join(root, path) # result.append(matched_path) matched_path = find_location(root, path) if matched_path: yield matched_path # return result
  2. — работать над проектом в команде — хранить полную историю

    развития проекта — узнать, когда кусок кода изменился (и кем) — получить исходники прошлых версий проекта Задачи
  3. Репозиторий (repository) — место, где система управления версиями хранит все

    документы вместе с историей их изменения и другой служебной информацией.
  4. cd ~/project git init Как создать новый репозиторий: git add

    . git commit -m "Initial commit" Как добавить все файлы в репозиторий:
  5. Коммит (commit) — фиксация изменений кода, при которой в хранилище

    создается новая версия измененных документов.
  6. commit b3bc0e009ac4f4125791711218ea4146e4940fe2 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    12:17:29 2012 +0400 Initial commit git log Как посмотреть историю изменений: История будет выведена в таком виде:
  7. commit b3bc0e009ac4f4125791711218ea4146e4940fe2 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    12:17:29 2012 +0400 Initial commit git log Как посмотреть историю изменений: История будет выведена в таком виде:
  8. commit b3bc0e009ac4f4125791711218ea4146e4940fe2 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    12:17:29 2012 +0400 Initial commit git log Как посмотреть историю изменений: История будет выведена в таком виде:
  9. commit b3bc0e009ac4f4125791711218ea4146e4940fe2 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    12:17:29 2012 +0400 Initial commit git log Как посмотреть историю изменений: История будет выведена в таком виде:
  10. commit b3bc0e009ac4f4125791711218ea4146e4940fe2 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    12:17:29 2012 +0400 Initial commit git log Как посмотреть историю изменений: История будет выведена в таком виде:
  11. # On branch master # Untracked files: # (use "git

    add <file>..." to include in ... # # two.py nothing added to commit but untracked files ... git status Как посмотреть состояние рабочей директории: Что увидим:
  12. # On branch master # Untracked files: # (use "git

    add <file>..." to include in ... # # two.py nothing added to commit but untracked files ... git status Как посмотреть состояние рабочей директории: Что увидим:
  13. # On branch master # Changes to be committed: #

    (use "git reset HEAD <file>..." to unstage) # # new file: two.py # git add two.py Как начать отслеживать новый файл: Состояние рабочей директории:
  14. # On branch master # Changes to be committed: #

    (use "git reset HEAD <file>..." to unstage) # # new file: two.py # git add two.py Как начать отслеживать новый файл: Состояние рабочей директории:
  15. # On branch master nothing to commit (working directory clean)

    git commit -m "Add 1+1=2" Теперь можно зафиксировать изменения: Состояние рабочей директории:
  16. — неизмененный (unmodified) — измененный (modified) — подготовленный к коммиту

    (staged) Состояния отслеживаемого файла в рабочей директории
  17. # On branch master # Changes not staged for commit:

    # (use "git add <file>..." to update what ... # (use "git checkout -- <file>..." to ... # # modified: two.py # no changes added to commit (use "git add" ... echo "print(2 * 2 - 2)" > two.py Изменим отслеживаемый файл: Состояние рабочей директории:
  18. # On branch master # Changes not staged for commit:

    # (use "git add <file>..." to update what ... # (use "git checkout -- <file>..." to ... # # modified: two.py # no changes added to commit (use "git add" ... echo "print(2 * 2 - 2)" > two.py Изменим отслеживаемый файл: Состояние рабочей директории:
  19. diff --git a/two.py b/two.py index 904fa0d..01fa22a 100644 --- a/two.py +++

    b/two.py @@ -1 +1 @@ -print(1 + 1) +print(2 * 2 - 2) git diff Можно посмотреть, что изменилось: Вывод команды:
  20. diff --git a/two.py b/two.py index 904fa0d..01fa22a 100644 --- a/two.py +++

    b/two.py @@ -1 +1 @@ -print(1 + 1) +print(2 * 2 - 2) git diff Можно посмотреть, что изменилось: Вывод команды:
  21. commit c70b1013f8bd5efcf1093efdd4d94850a7e2e292 Author: Mike Yumatov <[email protected]> Date: Tue Sep 25

    17:14:54 2012 +0400 Update two commit c9e2672b64840308913aa6b31bbe612d58963add Author: Mike Yumatov <[email protected]> Date: Tue Sep 25 16:33:25 2012 +0400 Add 1+1=2 commit a59afe58b5fe37ac61d658b9f4fcfb67ec73ad9d Author: Mike Yumatov <[email protected]> Date: Tue Sep 25 15:41:30 2012 +0400 Initial commit История изменений
  22. — отдельная для каждого файла история изменений — откатиться до

    старой версии проекта сложно — нет возможности ветвления кода проекта — нельзя одновременно работать над проектом
  23. — клиент-серверная архитектура — можно хранить репозиторий на удаленном сервере

    — подходит для коллективной работы — поддерживаются ветки проекта
  24. — для хранения репозиториев требуется сервер — единая история для

    всего проекта — одна ревизия может включать много файлов