Edited at

Gitコマンドを関数化してpush/pullを簡単化


はじめに

自分はローカル環境とサーバ環境とのファイル共有のために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