たねやつの木

Photos and Programming

gitでファイルのファイルのバージョン管理を行う。(2 - Raspberry Piへ導入)

git_on_raspi

この記事では前回行ったWindows上でのgitコマンドの導入とおなじく、Raspberry Pi(Linux(Debian))への導入を行います。

前の記事

導入

パッケージの最新化

$ sudo apt-get update
$ sudo apt-get upgrade

パッケージリストを最新化しておきましょう。時間に余裕があればアップグレードも行います。

apt-get

$ sudo apt-get install git

でgitコマンドを使用可能になります。Windows比べるとぐっと楽ですね!

$ which git
/usr/bin/git

$ git --version
git version 2.11.0

インストールが成功しているかどうかは上記の2つのコマンドのいずれかでとりあえず判定できます。

git

基本コマンド

前回記事で使用したclone,add,commit,pushなどはすべてLinux上でも同じように使用できます。のでここでは割愛します。

commit時にはユーザー名などを設定していないと同じようにエラーとなるので設定してあげる必要があります。

> git config --global user.name "[ユーザー名]"
> git config --global user.email [メールアドレス]

設定するユーザー名はWindowsで設定したものと異なるものにしたほうがいいかもしれません。どの環境からコミットしたものなのかを判別するためにtaneyats@raspiとかtaneyats@winという感じにしてます。

pull

他ユーザーによってpushされた変更差分を取り込むためにはpullコマンドを使用します。cloneコマンドは一番最初にすべての最新ファイルを取得するために使用します。

Windows側からcommit.txtになんでもいいので文字列を追加してcommit,pushします。

# commit.txtを何かしら修正
> cd [commit.txtのあるフォルダ]
> git add .
> git commit -m "コメント"
> git push

初回push時に自動的にorginのmasterブランチにpushするようにしているのでgit pushだけでOKです。

リモートリポジトリに反映されていることが確認出来たら、Raspberry Pi側でpullを実行します。

$ cd [プロジェクト]
$ git pull
...
Fast-forward
 commit.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

最新のソースを反映させるだけであれば以上のコマンドでOKです。例によって途中でユーザー認証が挟まれますが(>_<)

コマンド実行結果の最後にプラスマイナスで差分が表示されます。

ユーザー認証の自動化

パスワードをそのまま設定ファイルに書き込むことになるのであまりお勧めできませんが、push,pull実行時のユーザー認証を自動化させることができます。

.git/configというファイルに追記します。プロジェクトルート内にある.gitというディレクトリにはこのプロジェクトのgitの設定ファイルやログなどがあります。

configというファイルを開いてみるとこんな感じかと思います。

$ cd [project]/.git
$ vim config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://gitlab.com/username/git_test.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
url = https://gitlab.com/username/git_test.git

の部分を

url = https://[ユーザー名]:[パスワード]@gitlab.com/username/git_test.git

という風にするとOKです。.gitディレクトリ内のファイルはcommit,push対象にはなりません。

最後に

以上でWindowsとRaspberry Pi上で基本的なgitコマンドを使用することができるようになりました。コンパイル不要なプログラム(JavaScriptやPHP)であればこれでWindowsで開発、テスト > Raspberry Pi上に反映という流れができます。FTPなどで転送するよりもバージョン管理もできるので便利ですね。