Carpe Diem

備忘録。https://github.com/jun06t

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