読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

サーバー上にgitレポジトリを作成して使うときのメモ

目次

サーバーにgitレポジトリを作成

test.git というディレクトリとする

$ mkdir test.git
$ cd test.git
$ git init --bare

ローカルにサーバー上のgitレポジトリを登録する

ローカルのgit管理しているディレクトリで、上で作ったサーバーのレポジトリremote addする。名前はorigin。

$ git remote add origin ユーザー名@ホスト名:path/to/test.git

次のようなコマンドでもOK

$ git remote add origin ssh://ユーザー名@ホスト名/path/to/test.git

以下のコマンドで結果(remote.origin.url)を確認できる

$ git config -l

ローカルの内容をサーバーのリポジトリpushする

masterpush

originmasterブランチへ。(下の-uオプションをつけたやり方の方がいい)

$ git push origin master

ローカルからpush/pullする時にorigin masterを省略できるようにしておく。-uオプションで追跡できるらしい。これで次からはgit push/pullというorigin masterが省略されたコマンドが使える。cloneした時は勝手にここまでやってくれるのでこの作業は省略できる

$ git push -u origin master

master以外のブランチをpush

上記コマンドではmasterしかpushされない。ブランチをpushしたいときは(例としてbranch_xyz

$ git push origin branch_xyz

クローンする

別のPCやサーバーにクローンする

$ git clone ユーザー名@ホスト名:repository/test.git

ディレクトリ名を変えたいときは

$ git clone ユーザー名@ホスト名:repository/test.git new_name

git branch -aで確認

$ git branch -a
* master
  remotes/origin/master

master以外のブランチをクローンする

$ git branch branch_xyz origin/branch_xyz

ブランチを取ってきて、一気にそのブランチに切り替えたいとき

$ git checkout -b branch_xyz origin/branch_xyz

submoduleがある場合

サブモージュールを含む場合は下記のコマンドを行わないとそのディレクトリの中身は空のまま。

$ git submodule init
$ git submodule update

レポジトリの更新

以上のレポジトリ登録作業が完了すれば、あとは更新するだびにpushするだけ

$ git push

最新版をレポジトリから取ってくる

$ git pull

レポジトリを別サーバーに移す

移したい先のサーバーで準備

ディレクトリを作成して、一番上に書いたようにgit init --bareしておく。

gitレポジトリの登録先を変更する

現在の登録先を確認

$ git remote -v

ローカルのgit管理下のディレクトリで、まず以前の登録内容を削除する

$ git remote remove origin

もう一度git remote -vで確認すると消えていることがわかるはず。

あとは上の方で書いたやり方で新しいレポジトリを登録する。

$ git remote add origin ユーザー名@ホスト名:path/to/test.git

pushする

あとはpushすれば終わり

$ git push -u origin master

また別のマシンでレポジトリの登録先を変更

同様にgit remote remove origingit remote add origin ユーザー名@ホスト名:path/to/test.gitで登録する。すでに先のマシンでpushしてあるのでこちらのマシンでは更新ファイルがある場合はpullすればいいが、ただ単にpullするとエラーがでた(gitのバージョンに依る?)

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> master

言われた通り、トラッキングインフォメーションを登録しておく

$ git branch --set-upstream-to=origin/master master

これであとはなにか更新があったときにgit pullとかすればいい