生活を良くします - 怠惰なプログラミング

読者です 読者をやめる 読者になる 読者になる

生活を良くします-怠惰なプログラミング

外資系でエンジニアをやっています。便利なサービスや商品、プログラミングで作ったものなどを紹介していきます

Gitで始める卒論管理 : USBを無くした時のバックアップ

Gitとは

Gitの使われ方

git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。
出典:git - Wikipedia

論文を書いていてやっぱり気が変わって大幅に修正します。ところが修正する前の方の論文を先生が読んでいて絶賛してくれました。しかし、もう大幅に論文は修正してしまったので原型すらありません。困った。

Gitとは、こういう事態を防いでくれるバージョン管理を行う無料ソフトのことです。

インストールの方法

Gitコマンドはここからダウンロード可能です

ここに他の使い道も載せました。
www.what-a-day.net

Gitの使い方流れ

$ cd 作業用フォルダ

/*リポジトリ作成*/
$ git init

/*ファイル追加 add .だと全部*/
$ git add .

/*追加するファイルを記録*/
$ git commit -m "変更点などをメモ"

/*コミットした履歴を照会*/
$ git log --oneline

/*昔のコミットから復元*/
$ git cat-file blob aa11bb2:test.docx > /Users/yourname/Desktop/test.docx


大雑把にこんな感じじゃないでしょうか。マメにGitを使ってバージョンを管理することで手間に見えますが、大きな失敗は無くせます。

gitを極めても意味がないので使えるかも、程度にしておきましょう。

実験の図をすげ替えたとか、段落を一つ消した、なんて時に前後でgitを取っておくと思ったより便利です。

ちなみにgitではpdfや写真、word文章なども全然扱えるので心配いりません。

コマンド編

リポジトリの作成

$ cd Desktop

$ mkdir GraduationThesis

$ cd GraduationThesis

$ git init
Initialized empty Git repository in /Users/YourName/Desktop/GraduationThesis/.git/

これでリポジトリの作成が完了しました。

Desktop上に「GraduationThesis」というフォルダを作成しました。ここに卒論のデータをガンガン入れていきます。

追加するファイルの確認

ここでは test.docxとtext.tex、Thesis.pngが「GraduationThesis」というフォルダに追加されました。

いづれも卒論のデータになるものを想定しています。

$ ls /*追加されたファイルの確認*/
test.docx	text.tex	Thesis.png

$ git status  /*gitでの状態の確認*/
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test.docx
	text.tex
        Thesis.png

nothing added to commit but untracked files present (use "git add" to track)

実際にファイルがどうなっているのかを確認しただけです。

この段階では何も追加されていません。次のコマンドで実際に追加していく作業を行います。


$ git add test.docx /*test.docxを追加*/
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   test.docx /*実際に追加されている*/

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	text.tex
	Thesis.png

これでtest.docxが追加されました。


$ git commit -m "卒論修正ver1"
[master (root-commit) bbf092d] 20161213 14:15
 1 file changed, 5 insertions(+), 0 deletions(-)
 create mode 100644 test.docx

やっとcommitできました。-mの後に "卒論修正ver1"とありますが、これはコメントです。

いつの時点での変更なのかを記録しておくと後から管理するのに非常に楽です。または、"実験の図の修正"などというコメントにして見ても良いと思います。

日付などは表示されます。

5 insertionsは5行ほど追加されたということで、deletionsは削除された行の数を示しています。

追加したファイルの復元方法

まずgit --onelineを打ち込むと 数字とアルファベットからなる7文字の文字列 + ”卒論修正ver1”というコメントが表示されます。

今回の7文字の文字列は"aa11bb2"です。
git cat-file blob に aa11bb2:(取り出したいファイル名) > (保存したいディレクトリ+ファイル名)で取り出すことが可能です。

これを使って復元します。

$ git log --oneline
aa11bb2   卒論修正ver1
cc33d41  卒論修正ver2
......
......

/*これで復元*/
$ git cat-file blob aa11bb2:test.docx > /Users/yourname/Desktop/test.docx

Google Driveと連携させる方法

最終的なセーブとして行います。Gitがversion管理をメインにしていたのに対してこちらは完全なバックアップという目的があります

パソコンが壊れた場合に備えましょう。Google Driveアプリのフォルダに入れておけば勝手に同期されます。

このサイトが一番参考になりました。
www.iexplain.org


手順

  1. Google Driveのダウンロード、ここから
  2. Google Driveでフォルダ作成、そのフォルダ内にcdで移動
  3. git init --bare project1.gitを実行
  4. 元のフォルダに戻る(GraduationThesis)
  5. git remote add origin /Users/yourname/Google\ Drive/Project1/project1.gitを実行
  6. git push -u origin master


コマンドで書くとこうなります。

$ cd /Users/yourname/Google\ Drive/Graduation/
$ mkdir graduation.git
$ cd graduation.git
$ git init --bare graduation.git

$ cd /,,,/GraduationThesis
$ git remote add origin /Users/yourname/Google\ Drive/Graduation/graduation.git
$ git push -u origin master


取り出す方法は簡単で、以下のコマンドを実行します。うまく実行できればGradutaionThesisフォルダが丸ごと復元できます。

パソコンが壊れてもGoogle Driveへのアカウントさえあれば問題ないでう。

このGraduation/graduation.gitをダウンロードし、同じように以下のコマンドを実行すればファイルが復元します。

/*ダウンロードしたいフォルダで*/
git clone /Users/yourname/Google\ Drive/Graduation/graduation.git

Google Driveと連携させる際のエラー

$ git remote add origin /Users/yourname/Google\ Drive/Graduation/graduation.git
fatal: remote origin already exists.

このようなエラーが生じた場合にはgit remote rm originを実行します。それで解決できます。


それ以外のエラーでは以下のようなものがあります。

$ git push -u origin master
fatal: '/Users/yourname/Google Drive/Graduation/graduation.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

これはほとんどがタイプミスなので、ディレクトリ名やファイル名を確認してgit remote rm originを実行して何回か繰り返すとうまくいきます。



ツール使用編

sourcetree

ここからダウンロード可能です。もちろん無料ですが、若干設定などがあります。
www.sourcetreeapp.com

f:id:what_a_day:20161215235059p:plain

また、Githubとの連携も求められたりするので一番上で紹介した過去記事を参考にして各種設定を済ませてもらえばと思います。

使い方など

直感的に使えるので直感しか使ってないです。

対象としたいフォルダをドラッグ&ドロップします。これによってsourcetreeからのGit操作が可能になります。
f:id:what_a_day:20161215235308p:plain:w350
uncommitted changesでコミットされていない変更点を見つけ出します。
f:id:what_a_day:20161215235131j:plain


見つけ出して選択しコミットを押すとコミットが終了です。その後、pushを押すとどこに飛ばすのかを聞かれます。googleの場所にしておきました。最後に確認をされるので答えます。

f:id:what_a_day:20161215235145j:plain

f:id:what_a_day:20161215235154p:plain

たったこれだけで完了したのですが、どちらかというとコマンドの方が使いやすそうだなと。

まとめ

  1. Gitは卒論のバージョン管理にも使える
  2. こまめにバージョンを保存しておけば失敗も少ない
  3. Google Driveとも連携すれば安心