はじめに
自分はローカル環境とサーバ環境とのファイル共有のためにGitHubを使うことがある。この場合やりたいことは両環境でのファイル変更を反映させることだけなのだが、Gitコマンドはこれが意外と面倒。いちいち数行のコマンドを打つ必要が必要がある。
そこでこれらのコマンドをまとめて関数化してしまおうと思った。
関数定義
~/.bashrc に以下を記述して,再ログインまたはsource ~/.bashrc
で適用。
ここではホームディレクトリにあるDeropyというリポジトリを扱うことにする。
pullD() {
cd ~/Deropy/ # ディレクトリ移動
git pull https://github.com/derodero24/Deropy # pull
cd - # もといたディレクトリに戻る
}
pushD() {
cd ~/Deropy/ # ディレクトリ移動
git add . # 変更をすべてadd
git commit -m "from Server" # コミットメッセージを設定
git push origin master # masterブランチにpush
cd - # もといたディレクトリに戻る
}
ユーザ名・パスワードの省略
上記の関数を使ってもユーザ名とパスワードは毎回聞かれる。そこでこれらも別途保存してしまうことにする。
git config --global credential.helper store
と打ったあとに一度だけログインすると,ユーザ名・パスワードが ~/.git-credentials に保存されて,以降聞かれなくなる。
使ってみる
pull
derodero:~$ pullD
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/derodero24/Deropy
* branch HEAD -> FETCH_HEAD
Updating b7392af..e406476
Fast-forward
common.py | 2 ++
1 file changed, 2 insertions(+)
/home/derodero
push
derodero:~$ pushD
[master daf4eb4] from Server
1 file changed, 1 insertion(+)
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 290 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/derodero24/Deropy
1bc2606..f3d1f53 master -> master
/home/derodero