GIT IMMERSIONで無料でGitを学ぶ メモ2
GIT IMMERSIONで無料でGitを学ぶ メモ1
に引き続きメモその2です。
続きは
GIT IMMERSIONで無料でGitを学ぶ メモ3
GIT IMMERSIONで無料でGitを学ぶ メモ4
GIT IMMERSIONで無料でGitを学ぶ メモ5
GIT IMMERSIONで無料でGitを学ぶ メモ6
GIT IMMERSIONで無料でGitを学ぶ メモ7
GIT IMMERSIONで無料でGitを学ぶ メモ8
GIT IMMERSIONというGitのやり方を教えてくれるチュートリアルサイトを勉強しながらメモを取っています。
自分用なのであまり見やすいものではないです。
がメモ1に較べて大分翻訳らしくなってきました。
※ $ git hist コマンドはGIT IMMERSION LAB11 でコマンドエイリアスを設定しているので
hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
の意味です。
GIT IMMERSION LAB18
目的を果たしたタグを削除しよう。(LAB17でコミットを取り除く前に最新のコミットにoopsというタグを付けた)
$ git tag -d oops
$ git hist --all
でも、表示されなくなった。タグを削除したことで参照が外れたので
ガーベッジコレクション対象となった。
GIT IMMERSION LAB19
コミットを修正する方法
コミットをした後で「あ、あれも修正しとくんだった!」と気づいてしまったがコミットを2つにしたくない時、前回のコミットを修正するにはhello.rbを修正→コミット→hello.rbを修正とします。
1.普通にhello.rbを修正してコミット
$ git add hello.rb
$ git commit -m "Add an author comment"2.ここで前回のコミットを修正したくなった
$ git add hello.rb
$ git commit --amend -m "Add an author/email comment"
コマンドを使う。
3.$ git histでコミットが修正されたか確認する。
1.でコミットした時の"Add an author comment"というコミットメッセージは消えて、2.でコミットした時の"Add an author/email comment"に置き換わっているはず。これと同じことは、ブランチをリセットして1つ前のコミットに戻り、新しく変更を反映してから再度コミットすれば出来る。
GIT IMMERSION LAB20
リポジトリの中のファイルを移動する方法
◯やり方その1
hello.rbをlibディレクトリに移動するとする
git mvを使う。$ mkdir lib
$ git mv hello.rb lib
$ git statusこの操作で元のディレクトリにあったhello.rbが削除され、新しく作成されたlibディレクトリにhello.rbが作成された。
この情報はただちにステージングされ、コミット待ちになる。
git status コマンドを叩くと、ファイルが移動されたことが表示される。◯やり方その2
hello.rbをlibディレクトリに移動するとする
自分でファイルを移動した後、git addで新しい場所のhello.rbを追加、git rm で元の場所のhello.rbをGitから取り除く。$ mkdir lib
$ mv hello.rb lib
$ git add lib/hello.rb
$ git rm hello.rb◯以上の変更をcommitする。
$ git commit -m "Moved hello.rb to lib"
GIT IMMERSION LAB21
他のファイルをリポジトリに追加する方法
まず、Rakefile(rake を実行するときに読み込まれるファイル。
実態は Ruby スクリプトである。)をリポジトリに追加しましょう。下記の方法でうまくいくでしょう。Rakefileという名称のファイルを作成する。
その中に以下のように記述し保存する。ここから----
#!/usr/bin/ruby -wKUtask :default => :run
task :run do
require './lib/hello'
end
ここまで----作成したRakefileをaddしてcommitしましょう
$ git add Rakefile
$ git commit -m "Added a Rakefile."Rakeを使ってhello.rbを実行してみよう。
$ rakeHello, World!が表示される。
GIT IMMERSION LAB22
Gitの内部
「.git」ディレクトリの構造について学ぼう。探検の時がやってきた。まずはあなたのプロジェクトのルートから…
◯実行してみよう
$ ls -C .git
ここにはgitの全ての材料が詰まっている。◯「objects」ディレクトリを覗いてみよう。
$ ls -C .git/objects
2文字の名前のディレクトリ群が表示されるはずだ。このディレクトリ名はgitに記録されたobject id ( = SHA1 )の初めの2文字だ。◯さらに深くobjectsを覗いてみよう。
$ ls -C .git/objects/のところにはさっき表示されたディレクトリを入れてみる。 こんな感じで表示される。 ls -C .git/objects/15 ea9e90ad5cc1c58cf6952c2f4a18deeb4234ae 38文字の名前のファイルが表示されるはずだ。 これらがgit に記録されたオブジェクトのファイルだ。これらのファイルは圧縮されエンコーディングされているので直接見てもわからないが、もう少し詳しく見ていってみよう。 ●Config File 実行してみよう $ cat .git/config 表示されたのはプロジェクト特有の設定情報ファイルだ。 このプロジェクトでは、あなたのホームディレクトリの下にある.gitconfigにある設定情報を上書きする。 ●Branches and Tags 実行してみよう $ ls .git/refs $ ls .git/refs/heads $ ls .git/refs/tags $ cat .git/refs/tags/v1 (このv1というタグは以前のレッスンで付けたタグ) tags のサブディレクトリにファイルがある。どのタグもあなたが以前git tag コマンドを使って付けたタグと一致する。それらの中身はタグに紐付けられたコミットのハッシュだ。 headsディレクトリは似ているがタグよりむしろブランチに使われる。私たちは現時点で一つだけのブランチを持っているからあなたはmasterだけが見える。 ●HEAD File 実行してみよう $ cat .git/HEAD HEADファイルは現在のブランチへの参照を持っている。現時点ではmasterを参照しているはずだ。