この記事では前回行った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などで転送するよりもバージョン管理もできるので便利ですね。
