Skip to content

12.11 ソース管理

少数のプログラムを扱っているうちは変更を覚えていられますが、ミスで数日分の仕事を失わないためにはソース管理システムが必須です。特に複数人での開発において、ソース管理は欠かせないツールとなります。

分散バージョンコントロールシステム

Section titled “分散バージョンコントロールシステム”

Pythonの世界で広く使われているのは、MercurialGit の2つです。これらは「分散型」と呼ばれ、リポジトリのコピーを複数の場所に持ちます。

  • Mercurial: Pythonで書かれており、習得が比較的簡単です。
  • Git: Linuxカーネル開発のために作られたシステムで、現在はオープンソース開発において支配的な地位にあります。最大のホストサイトは GitHub です。

Gitを使った基本的なワークフローを、コマンドラインでの操作例とともに見ていきましょう。

新しいディレクトリを作成し、Gitリポジトリとして初期化します。

Terminal window
$ mkdir newdir
$ cd newdir
$ git init
# Initialized empty Git repository ...

ファイルを作成し、Gitの管理対象としてステージング(add)します。

Terminal window
# ファイルの作成
$ echo "print('Oops')" > test.py
# ファイルをステージングに追加
$ git add test.py
# 状態の確認
$ git status
# On branch master
# Changes to be committed:
# new file: test.py

ステージングされた変更を、メッセージとともにリポジトリに記録(コミット)します。

Terminal window
$ git commit -m "my first commit"
# [master (root-commit) ...] my first commit
# 1 file changed, 1 insertion(+)

ファイルを編集したあと、以前のバージョンとの違い(差分)を確認したり、再度コミットしたりします。

Terminal window
# ファイルを書き換える
$ echo "print('Ops!')" > test.py
# 差分を表示
$ git diff
# -print('Oops')
# +print('Ops!')
# 変更をステージングしてコミット
$git add test.py$ git commit -m "my first change"

これまでの変更履歴を新しい順に確認します。

Terminal window
$ git log test.py
# commit ...
# Author: ...
# Date: ...
# my first change
#
# commit ...
# my first commit