うまくスキップができない

理系大学院生の備忘録だったり,頭の中身

Raspberry Pi 3にGitサーバーを構築してみた

背景

諸事情によりインターネットから隔離された環境で ラズパイを使った開発をしなければいけなくなったので 開発を便利にするためにサーバー用のラズパイ3を持ってって そこにGitサーバー構築便利だよねってことで

環境

必要なもの

  • OSを書き込んだSD
  • RaspberryPi3
  • (2ならwi-fiモジュール)←今回は無線接続を想定

手順

  • いつもの(apt-getの更新)
sudo apt-get update
sudo apt-get upgrade

Gitのインストール【gitがインストールされていなければ】

sudo apt-get install -y git
sudo apt-get install -y wget git-core

Git serverへのユーザー作成

sudo adduser git

そしてパスワード等を入力する
※Full Name等の情報は未入力でもいいらしい

Git リポジトリ作成

今回は/home/piにgitディレクトリを作成し
その中にhoge.git[ディレクトリ]を作成する
hoge:作成したリポジトリの名前

mkdir /home/pi/git
cd /home/pi/git
mkdir hoge.git

※サーバーのGitリポジトリhoge.gitとするらしい

Git リポジトリを初期化@/home/pi/git/hoge.git

git init --bare
git init

設定変更

たぶん今のままだと

git config --get-all core.bare
false

となっていると思うので

git config --bool core.bare true

とする
確認するとtrueになっている

git config --get-all core.bare
true

ローカルリポジトリ作成

git init
  • remoteを追加
git remote add repo pi@XXX.XXX.XXX.XXX:/home/pi/git/hoge.git

piはユーザー名
repoは適当な名前で大丈夫です
* 適当なファイル(test.txt)を作成して

git add test.txt
  • コミットしよう
git commit -m "first commit"
  • プッシュしよう
git push --set-upstream test master

※これ以降はgit push testでいけたはず

クローンする

これでクローンできる

git clone pi@XXX.XXX.XXX.XXX:/home/pi/git/hoge.git

完璧ではないかもだけどとりあえず動いてるっぽい
何か間違っている部分があったら随時追記します

エラー集【今回おきたエラーなどなど...】

  • fatal: No configured push destination.
  • fatal: does not appear to be a git repository これは単純にpathの間違いでした
    最初remoteにaddするときに
git remote add test pi@XXX.XXX.XXX.XXX:/home/git/hoge.git

としていて
正解は

git remote add test pi@XXX.XXX.XXX.XXX:/home/pi/git/hoge.git

でしたよ(piが抜けてた),という話

  • failed to push some refs to
    git pushしたときに発生したエラー
    こんなの
Counting objects: 3, done.
Writing objects: 100% (3/3), 211 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To XXX.XXX.XXX.XXX:/home/pi/git/hoge.git
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'pi@XXX.XXX.XXX.XXX:/home/pi/git/hoge.git'

このコマンドで解決git config --bool core.bare true

git config --get-all core.bare
false

であることが原因らしいtrueにしたらpushできた

参考

www.webprofessional.jp nilfigo.hatenablog.com Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法 (ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法)