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

VCS

Mike Yumatov
September 27, 2012

 VCS

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. — для хранения репозиториев требуется сервер — единая история для

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