普段はGitHubを使っているが,自分専用のファイルをバージョン管理するのにプライベートリポジトリが欲しい。そこで,自分のCentOS7サーバで構築してみた。リポジトリ名は hoge とする。
sudo yum install git sudo mkdir -p /var/git/hoge.git sudo chown okumura:wheel /var/git/hoge.git cd /var/git/hoge.git git init --bare # または git init --bare --shared
これで完成である(--shared
を付けるのはリポジトリを共有したい場合である。その際には /var/git/hoge.git のグループで管理する)。試しに別マシンから clone してみる。
git clone ssh://example.org/var/git/hoge.git
サーバ側のユーザ名と違うならホスト名の前に ユーザ名@
を付ける。パスワードを聞かれるのが面倒であれば,クライアント側マシン(サーバでないほう)の公開鍵 ~/.ssh/id_rsa.pub の内容をサーバの ~/.ssh/authorized_keys に書き込んでおく(パーミッションは600)。~/.ssh/id_rsa.pub がなければ パスワードなしのログインに書いた作業をしておく。これらは git に限らず一般的にやっておくべきことである。ssh-keygen -t rsa -C "自分のメアド"
で作る。同時にできる秘密鍵 ~/.ssh/id_rsa はパーミッション400にしておく。
clone の際に “warning: You appear to have cloned an empty repository.” のような警告が出て,hoge という(管理用ディレクトリ .git 以外は空の)ディレクトリが作られる。その中に入って,とりあえず README.md と .gitignore というファイルを作ってサーバ側に送ってみよう。.gitignore にはサーバに送らないファイル名を列挙する。RとLaTeXで作業をするなら例えば
.DS_Store .Rhistory *~ \#* *.dvi *.aux *.log *.toc *.idx *.ind *.ilg *.out *.blg
のように書き込んでおく。これで
git add README.md .gitignore git commit README.md .gitignore -m "initial commit" git push
のような感じでサーバに送る。
上の記事は2016年に書いた。当時はCentOSを使っていたが、最近Alma Linuxに乗り換えた。その際にサーバ側のリポジトリが失われてしまったので、再構築した。
まずサーバ側で次のようにしておく。
sudo dnf install git sudo mkdir /var/git sudo chown okumura /var/git git init --bare /var/git/hoge.git
ローカルリポジトリの .git/config
に
[remote "origin"] url = ssh://example.org/var/git/hoge.git
のような記述があるので必要に応じて編集する(例えばsshポート番号を12345に変えたなら ssh://example.org:12345/var/git/hoge.git
のように直す)。そして、ローカルリポジトリ内で
git push --mirror ssh://example.org:12345/var/git/hoge.git
とすれば完成である。あるいは
git push --all origin git push --tags origin
でもよい。