git と svn

git や svn はファイルのバージョン管理に利用される管理システムである。例えば、D 論を書いた場合、初めの方は D 論のファイル名に日付を付けて管理しているが、卒業間近になると、わかりやすく完成版や提出版などの名前を付けておくと、どのファイルにどのような修正を加えたのはわからなくなる。こういう場合、いつ、どのファイルに対して、どんな内容を変更したのかを履歴を残すことによって、あとあとが助かる場合がある。このような変更履歴などを管理するシステムが git や svn などになる。

D論最終提出版の修正版

バイオインフォマティクスの分野において、プログラムを作ったりしながらデータの解析を行う場合が多い。この場合、作成したプログラムを 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