Bash
Git
GitHub

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