git や svn はファイルのバージョン管理に利用される管理システムである。例えば、D 論を書いた場合、初めの方は D 論のファイル名に日付を付けて管理しているが、卒業間近になると、わかりやすく完成版や提出版などの名前を付けておくと、どのファイルにどのような修正を加えたのはわからなくなる。こういう場合、いつ、どのファイルに対して、どんな内容を変更したのかを履歴を残すことによって、あとあとが助かる場合がある。このような変更履歴などを管理するシステムが git や svn などになる。
バイオインフォマティクスの分野において、プログラムを作ったりしながらデータの解析を行う場合が多い。この場合、作成したプログラムを git で管理すれば、いつ、どのファイルに対して、どんな内容を、なぜそう変更したのかの履歴を残すことによって、作業の効率が捗るだけでなく、データ解析結果の再現性も保証できるようになる。バイオインフォマティクスの分野では、GitHub または Bitbucket などが提供している git バージョン管理が一般的に利用される。
git
push した操作を取り消す
ファイルを編集し間違って push
した場合、次のようにして取り消すことができる。
# 間違ってコミット
git add README
git commit -m "add readme file"
git push
# push の取り消し
git reset --hard HEAD^
git push -f origin HEAD^:master
マージ
分岐して開発を進めたコードをメインのブランチに反映させるときの例。コミット履歴からコミット番号を確認した後に、cherry-master
を利用して反映させる。
----A----B----C----D [master] | -----K----L----M [devel]
git checkout devel
git log # コミット履歴を確認
## commit e649c2b134aea3d943423c348248aead59a3d4c
## Author: ...
## Date: Fri May 24 08:24:33 2013 +0900
##
## M commit
##
## commit 540ed624eef1640aaa5b860c62883d3628aef0a
## Author: ...
## Date: Wed May 22 12:32:44 2013 +0900
##
## L commit
##
git checkout master # masterブランチに移動
git cherry-pick e649c2b134aea3d943423c348248aead59a3d4c
fork 元の変更をマージ
fork 元のブランチを git@github.com:jqsunac/bioinformatics の master ブランチとする。
git remote add upstream git@github.com:jqsunac/bioinformatics
git fetch upstream
git merge upstream/master
svn
ファイルを更新
ローカルで更新したすべてのファイルをレポジトリーに反映するときは commit
を利用する。
svn commit
特定のファイルをレポジトリーに反映するときは ci
を利用する。
svn ci -m "change comments" ./path/to/file1 ./path/to/file2
更新の取り消し
ローカルで変更したファイルの変更内容を取り消して、レポジトリーにある内容に戻したい場合は revert
を利用する。
svn revert ./path/to/file1 ./path/to/file2