ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

複数のPCでリモートリポジトリを共有し、各ローカルリポジトリでgit cloneやgit pushを実行する

自宅PCにてRailsアプリケーション環境を作成し、それをGitHubリポジトリにpushしたが、会社PCでも同じリポジトリの内容を共有できれば楽だなーと思ったので、そうしてみた。

やりたいこと

  1. リモートリポジトリ(GitHub)の内容をpush元とは異なるローカルリポジトリに反映する。
  2. push元とは異なるローカルリポジトリからリモートリポジトリへpushする。

ローカルリポジトリの環境

自宅PC・会社PCともにVagrantで立ち上げた仮想マシン上で管理する。

1. リモートリポジトリの内容を別のローカルリポジトリへ反映

GitHubリポジトリ画面で「SSH clone URL」をコピーする。

f:id:pyoonn:20141021154409p:plain

git cloneで「SSH clone URL」を指定して、リモートリポジトリの内容をローカル環境上にコピーする。

[vagrant@localhost first_app_workspace]$ git clone git@github.com:ponkiti/first_app.git
Initialized empty Git repository in /home/vagrant/rails_projects/first_app_workspace/first_app/.git/
The authenticity of host 'github.com (192.30.252.130)' can't be established.
RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts.
remote: Counting objects: 60, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 60 (delta 2), reused 60 (delta 2)
Receiving objects: 100% (60/60), 13.86 KiB, done.
Resolving deltas: 100% (2/2), done.

リモートリポジトリの内容がローカル環境にコピーできた。

[vagrant@localhost rails_projects]$ ls
first_app

2. 別のローカルリポジトリからリモートリポジトリへpush

今回のケースでは同じRailsアプリケーションを共有したいので、Railsアプリケーションを動かす環境は自宅PC・会社PCで揃えておく必要がある。環境構築メモ(1)の 「Railsアプリケーションの作成」以外を実行しておく。

SSH Keysの作成と登録

環境構築メモ(2) と同様に、新たにリモートリポジトリの内容を反映したい環境で「秘密鍵と公開鍵の作成」と「SSH Keysの設定」を行なう。

  • 今回は「first_app_workspace」という名称でSSH Keysを登録した。
  • PCごとにSSH Keysを登録する必要があるらしい。

f:id:pyoonn:20141021150505p:plain

ファイルの編集

例として、first_appディレクトリにtest_fileを作成したとする。

git add

インデックスにtest_fileを追加する。

[vagrant@localhost first_app]$ git add test_file

git status

[vagrant@localhost first_app]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#     new file:   test_file
#

git commit

[vagrant@localhost first_app]$ git commit -m "git test workspace"
[master 15deb5b] git test workspace
 1 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 test_file

git push

[vagrant@localhost first_app]$ git push
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:ponkiti/first_app.git
   cfe92ba..15deb5b  master -> master

リモートリポジトリを確認

リモートリポジトリに変更が反映された!

f:id:pyoonn:20141021162941p:plain

参考