Gitでローカル、共有リポジトリを作成
前回の続きです。
Gitの注意としては、分散型であるためにリポジトリがローカルと共有の2つがあるところです。今回は
①ローカルにリポジトリを作成&簡単な使い方
②共有リポジトリ(remote)を作成
③ローカルのデータお共有リポジトリに転送(push)
の流れ説明します。
◆リポジトリの作成
適当にフォルダを作成
$ mkdir hoge
$ cd hoge
$ git init
これでローカルリポジトリの作成は完了です。.gitファイルが作成され、そこにsvnのリポジトリでも見たようなhooksなどのフォルダが作成されています。
◆ファイルを作成してコミット
~/hoge$ echo "hogehoge" > hoge.txt
svn同様新しいファイルは status オプションで確認できます。
~/hoge$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# hoge.txt
nothing added to commit but untracked files present (use "git add" to track)
リポジトリに登録するには同じく add オプション
~/hoge$ git add hoge.txt
コミットします。
~/hoge$ git commit -m "first commit"
ちゃんと登録されているか、一度ファイルを削除して確認する。
~/hoge$ rm hoge.txt
~/hoge$ git checkout
D hoge.txt
~/hoge$ git checkout hoge.txt
~/hoge$ ls
hoge.txt
元に戻りましたね。git checkout はsvn upに近いことができます。また次回説明しますが、ブランチの変更にも使用します。
◆ファイルの編集
編集し、差分を確認します。
~/hoge$ echo "piyopiyo" >> hoge.txt
~/hoge$ git diff
diff --git a/hoge.txt b/hoge.txt
index 2262de0..50345fa 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1 +1,2 @@
hogehoge
+piyopiyo
ここでsvnならそのままコミットできますが、gitは毎回コミットするファイルをaddで指定する必要があります。面倒な人は add を一緒にしてくれる「-a」オプションを使用しましょう。
~/hoge$ git commit -am "second commit"
◆共有リポジトリの作成
簡単な編集方法を説明したので次に移ります。共有リポジトリを作成し、ローカルリポジトリのデータを共有リポジトリにpushします。
適当なフォルダを作成します。慣習的に共有リポジトリには○○.gitとつけるようです。
$ mkdir share.git
$ cd share.git
$ git init --bare
今回は bare オプションをつけます。これをつけると .git フォルダは作られず「裸のまま(bare)」ファイル郡が作成されます。
◆ローカルのデータを共有リポジトリ(remote)に転送(push)
先ほどのローカルのデータを送ります。ネットワーク越し出ないので書き方は「file://」となります。
$ git push <送信先リポジトリ(remote)> <送信するブランチ(local)>:<送信先ブランチ(remote)>
という順なので
~/hoge$ git push file:///home/user/share.git/ master
masterは「master:master」の略です。(ローカルのmasterをリモートのmasterに反映させる)
◆共有リポジトリからデータを持ってくる
他の開発者が共有リポジトリからデータをダウンロードする際は以下のようにします。
$ git clone file:///home/user/share.git/ piyo
$ cd piyo
~/piyo$ ls
hoge.txt
きちんとダウンロードできていますね。このgit cloneでローカルリポジトリ「.git」も付いているので、基本的にこのpiyoフォルダでのcommitでは ~/piyo/.git のローカルリポジトリが更新されていきます。
共有リポジトリに変更を適用したい場合は
~/piyo$ git push origin master
逆に他の開発者が共有リポジトリを更新していて、データを持ってきたい場合は
~/piyo$ git pull origin
でOKです。
originというのはリポジトリURLのアリエス(別名)です。ではこのoriginはどうなっているかというと、以下のコマンドで確認できます。
~/piyo$ git remote -v
origin file:///home/user/share.git/ (fetch)
origin file:///home/user/share.git/ (push)
◆リモートリポジトリの編集
リモートリポジトリを加える場合
$ git remote add remote-name url
今回なら
$ git remote add origin file:///home/user/share.git/
fetch するには「-f」オプションをつける。
$ git remote add -f remote-name url
リネームする場合は
$ git remote rename old-name new-name
削除する場合は
$ git remote rm remote-name
URLを変更する場合は
$ git remote set-url remote-name <新しいリポジトリURL>
今回なら
$ git remote add origin file:///home/user/share.new.git/
◆補足
ローカルリポジトリのデータをcloneすることももちろんできます。
しかしpushなどではエラーを受けます。まだちょっと理解できていないのでこれは次回
ソース:
gitの使い方メモ
非エンジニア向けGitの使い方
gitでoriginのurlを確認する。
優しいgitの育て方 : svn update