Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

GIT IMMERSIONで無料でGitを学ぶ メモ8(最終回)

GIT IMMERSIONで無料でGitを学ぶ メモ1
GIT IMMERSIONで無料でGitを学ぶ メモ2
GIT IMMERSIONで無料でGitを学ぶ メモ3
GIT IMMERSIONで無料でGitを学ぶ メモ4
GIT IMMERSIONで無料でGitを学ぶ メモ5
GIT IMMERSIONで無料でGitを学ぶ メモ6
GIT IMMERSIONで無料でGitを学ぶ メモ7
に引き続きメモその8です。

GIT IMMERSIONというGitのやり方を教えてくれるチュートリアルサイトを勉強しながらメモを取っています。
自分用なのであまり見やすいものではないです。

※ $ git hist コマンドはGIT IMMERSION LAB11 でコマンドエイリアスを設定しているので
hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
の意味です。
$ git go コマンドは同じくエイリアスを設定しているので、
go='git checkout '
の意味です。

GIT IMMERSION LAB48

変更をpushする

リモートリポジトリに変更をプッシュする方法を学ぶ。

bareリポジトリは通常、ネットワークサーバのようなところで共有されているので、cd でリポジトリに入ってpullすることは困難である。だから他のリポジトリへの私たちの変更をプッシュする必要がある。

プッシュする変更を作成することから始めよう。READMEを編集し、それをコミットしよう。

ファイル:hello/README を以下のように編集する。

                                          • -

This is the Hello World example from the git tutorial.
(Changed in the original and pushed to shared)

                                          • -

実行してみよう
$ git checkout master
$ git add README
$ git commit -m "Added shared comment to readme"

さあ、共有リポジトリに変更をプッシュしよう。

実行してみよう
$ git push shared master

sharedは、pushしている変更を受けとるリポジトリの名前だ。(LAB47で「shared」という名前でリモートリポジトリを追加してのを思い出して欲しい。)

実行結果は以下のようなイメージだ。

                                          • -

$ git push shared master
To ../hello.git
e18658c..e4b00d1 master -> master

                                          • -

注:我々は、明示的にpushを受信するブランチの名前であるmasterを指定しなければならなかった。
自動的に設定することが可能だが、私はコマンド覚えていない。リモートブランチの管理を容易にするため“Git Remote Branch”で調べてみて欲しい。

GIT IMMERSION LAB49

共有された変更をpullする

共有リポジトリから変更をpullする方法を学ぶ。
早い所cloneしたリポジトリへ移動してたった今共有リポジトリにpushした変更を落としてこよう。

実行してみよう
$ cd ../cloned_hello
注:今cloned_helloリポジトリにいる。

続いて実行してみよう
$ git remote add shared ../hello.git
$ git branch --track shared master
$ git pull shared master
$ cat README

GIT IMMERSION LAB50

GITリポジトリホスティング

gitサーバーをセットアップし、リポジトリを共有する方法を学ぶ。
ネットワーク上でのgitリポジトリを共有する多くの方法がある。ここでは手っ取り早い方法を紹介しよう。

01:Gitサーバーのスタート

実行してみよう
# (From the work directory)
$ git daemon --verbose --export-all --base-path=.

別のターミナルウィンドウで、作業ディレクトリに移動する。

実行してみよう
# (From the work directory)
$ git clone git://localhost/hello.git network_hello
$ cd network_hello
$ ls

helloプロジェクトのコピーが表示されるはずだ。

02:Git daemonにpush

Gitデーモンリポジトリにpushしたい場合は、git daemonコマンドに --enable=receive-packを追加しよう。このサーバーには認証がないので注意してほしい。誰でもあなたのリポジトリにpushできてしまう。

GIT IMMERSION LAB51

リポジトリの共有

WiFi越しにリポジトリを共有する方法を学ぶ。

隣の人がgit daemonを実行しているかどうか見てみよう。IPアドレスを交換してお互いのリポジトリからpullできるか確認しよう。

注:The gitjour gem(これのことらしい→ http://rubygems.org/gems/gitjour)はローカルネットワーク上でリポジトリのシェアをとても簡単にしてくれる便利なツールだ。


GIT IMMERSION LAB52

高度/今後の課題

ここにあげるトピックは自分自身で調べたいと思うかもしれない。

コミットされた変更を元に戻す
クロスOSの改行コード
リモート·サーバ
プロトコル
SSHの設定
リモートブランチの管理
バグっているコミットの発見(git bisect)
ワークフロー
コマンドラインツール(gitx、gitk、magit)
GitHubのを使用した作業

GIT IMMERSION LAB53

GIT IMMERSION LABに挑戦ありがとう!
※作者のメールアドレスに連絡してほしいという内容なので省略

以上でメモは終わりです。翻訳しようと思うと斜め読みとは違った難しさがありますね。