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

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

GIT IMMERSIONで無料でGitを学ぶ メモ7

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

続きはこちら
GIT IMMERSIONで無料でGitを学ぶ メモ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 LAB43

pullした変更をマージする

現在のブランチと作業ディレクトリにpullした変更を反映しよう。

01:fetchした変更をローカルのmasterにmerge

実行してみよう
$ git merge origin/master

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

                                          • -

$ git merge origin/master
Updating e1399d1..e18658c
Fast-forward
README | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

                                          • -

02:READMEファイルをもう一度確認

今の時点で変更を確認するべきだ。
実行してみよう
$ cat README

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

                                          • -

$ cat README
This is the Hello World example from the git tutorial.
(changed in original)

                                          • -

変更された箇所がちゃんとあるね。"Git fetch"は変更をマージしてくれないが、手動でリモートリポジトリから変更をマージすることができる。

03:次回は
次は、単一のコマンドでフェッチ&マージプロセスを組み合わせてみよう。

GIT IMMERSION LAB44

変更のpull
"git pull"は"git fetch"+"git merge"と同等なことを学ぶ。

ディスカッション
別の変更を作成し、それをpullするというプロセスを再度行うつもりはないが、知って欲しい

$ git pull
は次の2つの手順を行うことと全く同等だ。
$git fetch
$ git merge origin/master

GIT IMMERSION LAB45

ラッキングブランチの追加

リモートブランチを追跡するローカルブランチを追加する方法を学ぼう。
remotes/originで始まるブランチは元のリポジトリのブランチだ。もうgreetというブランチを持っていないことに注意して欲しい。だがgreetブランチはオリジナルのリポジトリがgreetブランチを持っていたことを知っている。

01:リモートブランチを追跡するローカルブランチを追加しよう

実行してみよう
$ git branch --track greet origin/greet
$ git branch -a
$ git hist --max-count=2

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

                                          • -

$ git branch --track greet origin/greet
Branch greet set up to track remote branch greet from origin.
$ git branch -a
greet
* master
remotes/origin/HEAD -> origin/master
remotes/origin/greet
remotes/origin/master
$ git hist --max-count=2
* e18658c 2012-03-06 | Changed README in original repo (HEAD, origin/master, origin/HEAD, master) [Jim Weirich]
* e1399d1 2012-03-06 | Updated Rakefile (origin/greet, greet) [Jim Weirich]

                                          • -

ブランチの一覧にgreetブランチがあり、ログに表示されることがわかったと思う。

GIT IMMERSION LAB46

bare ​​リポジトリ

bareリポジトリを作成する方法を学ぶ。
作業ディレクトリの無い管理情報だけのbareリポジトリは通常は共有のためにつかわれる。

01: bareリポジトリを作成

実行してみよう。
$ cd ..
$ git clone --bare hello hello.git
$ ls hello.git

注意:現在作業ディレクトリにいる。

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

                                          • -

$ git clone --bare hello hello.git
Cloning into bare repository 'hello.git'...
done.
$ ls hello.git
HEAD
config
description
hooks
info
objects
packed-refs
refs

                                          • -

'.git'で終わるリポジトリはbareリポジトリであるという規則になっている。hello.gitリポジトリには作業ディレクトリが存在しないことがわかる。基本的に非bareリポジトリの.gitディレクトリに過ぎない

GIT IMMERSION LAB47

リモートリポジトリに追加する

元のリポジトリにリモートとしてbareリポジトリを追加する。
元のリポジトリにhello.gitリポジトリを追加してみよう。

実行してみよう
$ cd hello
$ git remote add shared ../hello.git
注:今「hello」リポジトリにいる。