git reset の取り消し方法

git reset の取り消し方法
#12 過去のバージョンに戻ってみよう (2)
http://dotinstall.com/lessons/basic_git/6712
を参考に
git reset の取り消し方法を学習
前回の状態が
ORIG_HEAD に保存されているため
git reset を実行した状態から
前回の状態に戻したいのなら
git reset –hard ORIG_HEAD
とする
これで
line1
だけの現状から
line1
line2
となっていた1つ前のファイル状態へ戻ることができる

git で過去バージョンへ戻す方法

git で過去バージョンへ戻す方法
#11 過去のバージョンに戻ってみよう (1)
http://dotinstall.com/lessons/basic_git/6711
を参考に過去バージョンに戻す方法を学習
バージョン管理システムの便利なのは
過去に戻って変更点をなかったことにできること
vim index.html
でファイルを編集
まず
line1
line2
となっているので
line3
を最終行に追記
git add .
でインデックス化
本来なら、git commit するけど
これを git log をみて直前の状態に戻したい場合には
git reset
を使う
一気に戻したいときには
オプションの
–hard を付ける
今回は何回か commit を繰り返しているけど
直前の commit 状態まで戻したいなら
HEAD を使う
オプションまでつけたコマンドは
git reset –hard HEAD
となる
現在の変更したindex.html は
line1
line2
line3
これを
git reset –hard HEAD
を実行すると
HEAD is now at 1110869 line2 を追加
と表示され
前回の commit 状態である
line1
line2
に戻っている
2つ前の状態まで戻したいのなら
git reset –hard HEAD^
というように
^ を追記する
また、もっとさらに前に戻したいのなら
git log で履歴をだして
commit 1110869d4bef57d3502c434ad9f4a94c8633242f
となっている部分の cpmmit ID を指定すればいい
今回は、もっと前の状態まで戻したいので
commit 53d156650c331b31b33c8907f25527e61978dfcf
のところまで戻してみた
git reset –hard 53d156650c
IDは全部いれずに最低最初から7ケタあれば十分
あとは、中身を確認すると
cat index.html
line1
というように、最初の状態まで戻すことができる

git の直前のコミットの変更

直前のコミットの変更
#10 直前のコミットを変更する
http://dotinstall.com/lessons/basic_git/6710
を参考に
コミットについて学習
すでに、前回
git add .
でインデックス状態なので
git commit
を実行するけど、一行しかコメントをつけないのなら
fit commit -m “line2 を追加”
というようにすれば
commit できる
実行結果は
[master f754810] line2 を追加
Committer: snowpool
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config –global user.name “Your Name”
git config –global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit –amend –reset-author
2 files changed, 2 insertions(+)
create mode 100644 .gitignore
結果を確認するため
git log
とすると
commit f7548100f0a9eedc4fee017f677ca19bfc5cd1cb
Author: snowpool
Date: Wed May 29 20:55:00 2013 +0900
line2 を追加
commit 53d156650c331b31b33c8907f25527e61978dfcf
Author: snowpool
Date: Tue May 28 21:28:11 2013 +0900
initial commit
となり、
入力したコメントが反映されている
書式としては
git commit -m “メッセージ”
となる
あと git commit したファイルの修正について
これは
vim index.html
で編集して
git add .
で再びインデックス化
そして
git commit –amend
と実行する
すると vim がたちあがり
コメントを変更するかどうか聞かれるので
:wq
でそのまま保存
これで余計に commit を増やさずに
変更を保存できる
ちなみに、git log で確認した結果は
commit 1110869d4bef57d3502c434ad9f4a94c8633242f
Author: snowpool
Date: Wed May 29 20:55:00 2013 +0900
line2 を追加
commit 53d156650c331b31b33c8907f25527e61978dfcf
Author: snowpool
Date: Tue May 28 21:28:11 2013 +0900
initial commit
というように
変更がされていないことが確認できる

git に特定のファイルを含めない方法

git に特定のファイルを含めない方法
#09 git管理に含めない設定について
http://dotinstall.com/lessons/basic_git/6709
を参考に git について学習
とりあえず、
vim error.log
でファイルを作成してみた
git add .
で一気にファイルをインデックスにできるけど
インデックスに含めたくないファイルもある
例えばログファイル
そんなときには
vim .gitignore
で設定ファイルを作成し
*.log
というようにファイル拡張子を指定することで
ログ関連ファイルはインデックス化しないようになる
とりあえず、現在のファイルは
index.html
error.log
.gitignore
となっているけど
git status を実行した結果は
# On branch master
# Changes to be committed:
# (use “git reset HEAD …” to unstage)
#
# modified: index.html
#
# Untracked files:
# (use “git add …” to include in what will be committed)
#
# .gitignore
となっていて
error.log が対象から外れているのが確認できる
これも実際にやったほうが分かるので
git add .
で一気にインデックス化して
git status
で確認すると
# On branch master
# Changes to be committed:
# (use “git reset HEAD …” to unstage)
#
# new file: .gitignore
# modified: index.html
#
というように
error.log が対象から外れてインデックス化されたことが
確認できる
.gitignore ファイルの有効範囲は
作成したディレクトリから下全部になる
このため、一番上に書くと
そこからのサブディレクトリまで設定は反映されるので注意

git でのファイル操作

git でのファイル操作
git で
git add するときのオプション
ファイルの削除、移動するときのコマンドを
#08 gitでのファイル操作について
http://dotinstall.com/lessons/basic_git/6708
を参考に学習
いままでの学習だとファイルを1つずつ実行していたけど
現実のプロジェクトではまとめて行うことになる
こんなときには
git add .
とする
これは、今のディレクトリより下のファイルを全て
git add するという意味になる
また、git add でインデックス化したファイルの削除は
git rm index.html
というようにして
移動するときにも
git mv index.html
というようにする
これは Linux コマンドで rm とか mv で移動してしまうと
いままで管理しているファイルがどこにいったのか
把握できなくなるので、
git 管理下においたファイルは
git rm
git mv
といったコマンドを使って管理することになる

git で差分確認

git で差分確認
#07 差分を確認してみよう
http://dotinstall.com/lessons/basic_git/6707
を元に
git での差分確認
これができると、どこを修正したかわかるようになる
わかりやすさを求めるので
index.htmlを編集して
line2 を最終行へ追記
この状態で
さきほどのように
git status
とすると
まだ add も commit もされていないということと
index.html が編集されたということがでてくる
そして、今回は変更されたところを見たいので
git diff
と実行
すると
diff –git a/index.html b/index.html
index a29bdeb..c0d0fb4 100644
— a/index.html
+++ b/index.html
@@ -1 +1,2 @@
line1
+line2
と表示される
ただし、確認できるのは
git add でインデックスに追加していない状態のものを
確認するもの
git add を行ったものは別のコマンドを使って確認することになる
それが
実験のため
git add index.html でインデックス登録
そして
git status
で確認すると
# On branch master
# Changes to be committed:
# (use “git reset HEAD …” to unstage)
#
# modified: index.html
#
となり
index.html は編集されたけど
まだ commit されていないということが表示される
このインデックス状態で差分を調べるには
git diff –cached
とする
これで、 git commit する前、つまりインデックス登録状態の差分を表示できる
ちなみに、実行結果は
diff –git a/index.html b/index.html
index a29bdeb..c0d0fb4 100644
— a/index.html
+++ b/index.html
@@ -1 +1,2 @@
line1
+line2

git の状態把握

git の状態把握
git で
どのファイルがどの状態で管理されているかを把握する
ことについて学習
#06 現在の状態を把握しよう
http://dotinstall.com/lessons/basic_git/6706
を、もとに学習
vim index.html

最終行へ line2 を追記
そしたら、
git status
で現状の確認
すると
# On branch master
# Changes not staged for commit:
# (use “git add …” to update what will be committed)
# (use “git checkout — …” to discard changes in working directory)
#
# modified: index.html
#
no changes added to commit (use “git add” and/or “git commit -a”)
と表示され
modified: index.html
と表示される
modified は変更されたという意味なので
modified : index.html

index.html が変更されたという状態を示す
no changes added to commit (use “git add” and/or “git commit -a”)
の部分は
まだ add  も commit もされていないということ
# (use “git add …” to update what will be committed)
は変更を保存するなら
git add
しましょうという意味で
# (use “git checkout — …” to discard changes in working directory)
間違えているのなら
git checkout
を使って修正しましょう
という意味
が表示されている
今回は、修正の仕方がでているので
この機会に実践
git checkout — index.html
これを実行した後に
cat index.html
を実行すると
line1
line2
だったのが
line1
だけに修正されている
今回は単純な修正だったけど
プログラミングのソースの修正には非常に役立つ
すべて修正するのはかなり面倒だけど
こうやって管理できると非常に楽

git log のオプション

git log
#05 gitのログを見てみよう
http://dotinstall.com/lessons/basic_git/6705
を参考に、今回は git log について
git log を実行すると
端末にいろいろな情報がでてくる
commit 53d156650c331b31b33c8907f25527e61978dfcf
となっているのが
git のIDのようなもので
基本的にユニーク、つまりかぶらないIDになる
SQL の primary key のようなかんじ
Author: snowpool
Date: Tue May 28 21:28:11 2013 +0900
これは
git したユーザと
コミットした日付
snowpool
がユーザ
Date: Tue May 28 21:28:11 2013 +0900
が日付となる
initial commit
はメッセージ
これはプログラミングでよくつかうコメントアウトのようなもの
ちなみに、
git log –oneline
とすると
コンパクトに一行にまとまる
53d1566 initial commit
というように、IDとメッセージだけでる
53d1566
がID
initial commit がメッセージ
そして、一番使いそうな変更点のみの表示
これを見るには
git log -p
不通に git log
で出した部分に加え、変更点も表示される
diff –git a/index.html b/index.html
new file mode 100644
index 0000000..a29bdeb
— /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+line1
が今回でてきた部分
— /dev/null
は変更点なしということ
@@ -0,0 +1 @@
+line1
変わった行数と変わった内容がでる
@@ -0,0 +1 @@
が変わった行数
+line1
が変わった内容
git log –stat
とすると
どのファイルが何ヶ所変更されたか見る事ができる
今回は
index.html | 1 +
1 file changed, 1 insertion(+)
となっているので
index.html を1箇所変更しているということになる

git によるバージョン管理 コミット

git によるバージョン管理 コミット
まずは
myweb というディレクトリ作成
mkdir myweb
cd myweb/
で作業用ディレクトリに移動
git init
を実行すると git でこの myweb というディレクトリを使う
ということを宣言する
つまり関数の初期化のようなものらしい
成功すれば
Initialized empty Git repository in /home/snowpool/myweb/.git/
というようにでるので
そしたら次の段階へ
もしダメなら
git config –global core.editor vim
を実行する必要があるらしい
これで下準備はできたので
ファイルを作成
vim index.html
中身は適当で、ただバージョン確認につかうために作成
今回は再現できればいいので
line1
と書いて保存
ここまでできたら、インデックスへ登録
インデックスへ登録するには
git add を使う
今回なら
git add index.html
となる
インデックスへ登録したら
ようやくリポジトリへ登録
これは
git commit
を使う
すると、エディタが開くので
一番上にメッセージを書き込む
今回も再現をしたいので
initial commit
これをやりたいけど
なぜか ubuntu の場合
git commit
で起動したのは vim ではなく nano
下にヘルプがでているのでそこまで問題にはならないけど
使いなれた vim のほうがやりやすいので
Nanoの基本ガイド
http://www.gentoo.org/doc/ja/nano-basics-guide.xml
を見ながら
Ctrl + o で保存して
Ctrl + x で終了
git config –global core.editor vim
を実行して
nano から vim へ変更
履歴の確認をするには
git log
で見る事ができる

git によるバージョン管理

git によるバージョン管理
git とはバージョン管理につかうもの
公式サイトは
http://git-scm.com/book/ja

ドットインストールでは
Linux で
git
vim
を使っている
作業ディレクトリは
/home/ユーザとなっている
このあたりについては
#01 gitとは何か?
http://dotinstall.com/lessons/basic_git/6701
を参照
とりあえず、今回はgit の学習ということで
デスクトップの Ubuntu へインストール
参考にしたのは公式サイトの
インストールページ
http://git-scm.com/book/ja/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
sudo apt-get install git
でインストール完了
vim に関しては
sudo apt-get install vim
でインストールできる
ちなみに、
ディストリによってインストール方法が異なる
fedora
centOS の場合
yum install git-core
となる
git の概要としては
ファイル作成
修正
ある程度まとまったらDBへ保存
作業ディレクトリ
 ファイルの作成、修正など
インデックス
それぞれの状態、つまりバージョンの違いを保存
リポジトリ
ローカルとリモートがある
個人ならローカル
リモートはネット上でソース共有に使える
ドットインストールでは
ローカルのほう
準備完了できたら
#04 初めてのコミットをしてみよう
http://dotinstall.com/lessons/basic_git/6704
から
git の学習を開始