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