- GitにSSH鍵で接続する。
- ローカルリポジトリにあるファイルを削除し、リモートリポジトリに反映
- Gitを使い慣れる。(マージの仕組みとかbranchとかのやり方とか)
- Git GUIを弄ってみる。(Sourcetreeが良いらしい?知らないけど)
GitにSSH鍵で接続する。
下記のサイトを参考にしながら、サーバーに公開鍵を置きローカルに秘密鍵を置きssh configの設定をする。
https://blog.cloud-acct.com/posts/u-github-ssh/
$ git remote add origin xrea:/virtual/ユーザー名/public_html/eccentric-lab.git
外部から見えないところに、リモートリポジトリを作成
remoteの設定をしていて気づいたのだが、これでは外部からリモートリポジトリの中身が丸見えである。
public_html配下ではなく、public_html外にリモートリポジトリを作り直す。
/public_html/の上位階層にリモートリポジトリ用のディレクトリを作成する。
/virtual/ユーザーID/eccentric-lab.git/
その中に移動して、下記を実行
git init --bare --share
リモートリポジトリの作成が完了したら、ローカルリポジトリに移動して中身をリモートリポジトリにpushする。
$ git remote set-url origin xrea:/virtual/ユーザーID/eccentric-lab.git
本番サイトのgit initも作り直す。
git init してremote設定して pull すれば出来ると思ったのだが、中身からっぽ?たぶん別branchに格納されたのだろう。
クローンなら簡単に出来た。
$ git clone /virtual/mandala/eccentric-lab.git eccentric-lab.cute.bz
初回、クローンではなくpullした場合
$ git init
$ git remote add origin xrea:/virtual/mandala/eccentric-lab.git
$ git pull
こうすると、中身が空っぽになってしまう(おそらく別のブランチ扱い?)ので
$ git pull origin master
上記のようにすると、出てくる。
Git pushすると…
git push –set-upstream origin master これ言われる。
git push origin masterなら問題ないけど、出来ればgit pushだけでアップしたい。
https://qiita.com/erii/items/e107b91a58f8250838da
$ git push --set-upstream origin master
これ、叩いたら良くわからん事になったけど、
何度かやっているうちに、上手くいくようになった。
$ git push -u origin master
上記でも良いみたい。
これで、pushだけでプッシュできるぽい。
Git 削除したファイルをリモートリポジトリに反映する方法
ローカルのファイルやディレクトリも一緒に削除したい場合
$ git rm test.txt{削除したいファイル}
$ git rm -r {削除したいディレクトリ}
$ git rm --cached {削除したいファイル}
$ git commit -m "delete"
$ git push origin master
直接 ローカルのファイルを削除しちゃった場合は、下記を実行する。
$ git add -u
$ git commit -m "delete"
$ git push origin master
とりあえず、ブラウザから閲覧不可の管理用リモートリポジトリと本番サイト(ノンベアリポジトリ)とローカルリポジトリの設定が完了した。
リモートリポジトリから本番サイトへ自動デプロイするマクロを作りたい。
手動でやる場合:
$ ssh xrea
$ cd public_html/eccentric-lab.cute.bz
$ git pull
上記をやるか、下記のような感じでやる感じ
$ ssh xrea
Git 1.8.5以降ならこっち
$ git -C /path/to/repo [command]
Git 1.8.5未満ならこっち
$ git --git-dir=/path/to/repo/.git --work-tree=/path/to/repo [command]
XREAのGitのバージョンが1.8.3なので、xreaの場合は下記のような感じになる。
$ git --git-dir=/virtual/mandala/public_html/eccentric-lab.cute.bz/.git --work-tree=/virtual/mandala/public_html/eccentric-lab.cute.bz pull
なんだけど、一々コマンド打ったりpath打ったりするのが面倒なので、自動的にデプロイしてくれるマクロあれば楽になる。
pushされたら自動的に本番サイトからpullするシェルスクリプト:
https://qiita.com/zaburo/items/8886be1a733aaf581045
上記は、pushされたら自動的に本番サイトからpullするって仕組みなんだけど
出来れば、pushされたタイミングでは無く任意のタイミングでpullしたいので
シェルスクリプトを作って実行すれば良いのかな。
シェルスクリプトを使って任意のタイミングでリモートリポジトリから本番へデプロイをする。
シェルスクリプト用のファイルのtest.shを作って中に下記を書く。
ssh xrea ls -la
ssh xrea のxreaってやつは、/user/windowsユーザー名/.ssh/configの中にhost名 xreaで色々設定書いてあるので短文で接続できるようにしてある。
上記のスクリプトを実行すると、ssh接続完了前に、ls -laが実行されてしまうのでサーバー内でls -laが実行されない。
ssh接続確認してから、コマンドを実行するようにしたい。
ssh xrea ls -la
一行で書けば、接続してから実行されるみたいだ。
https://qiita.com/nisoka/items/91a0007d2abaa7b266f1
要するに、
ssh xrea " ls -la; pwd; " read
こんな感じで書けば、ssh接続完了してから実行してくれるって事だね。
なので、リモートリポジトリから本番へ任意のタイミングで自動的にデプロイするシェルスクリプトは下記のようになる。
ssh xrea " git --git-dir=/virtual/mandala/public_html/eccentric-lab.cute.bz/.git --work-tree=/virtual/mandala/public_html/eccentric-lab.cute.bz pull; " read
上記の.shファイルを好きなタイミングで実行したら、
リモートリポジトリから本番サイトへ自動的に反映(デプロイ)されるようになる。
ぶっちゃけ、最後のreadは無くても良いけど無いと勝手にターミナル閉じちゃうから入れてる。
git ignoreを使ってファイルを無視する方法
Git GUI使ってみる。
Bashに慣れすぎちゃって、GUI使いずらい。
マージとブランチ関係は、一人で作業しているとそんなに必要ないからまた今度時間がある時に学ぶ君
XREAってユーザー追加できなくね?
色々やってて気づいたけど、XREAってユーザー追加できないよね?
だから、リモートリポジトリに–share付ける意味が無いという話
VPSとかAWSなら、じゃんじゃんユーザー追加できるだろうけど
レンタルサーバーだから勝手にサーバーにユーザーとか追加出来ないだろうに、リモートリポジトリ作成する時に–shareオプション付ける意味皆無
まぁ、どのみち一人で作業するので関係ないっちゃないんですがね。
一通り作業終わったら、VPSかAWSにお引越ししよ。