せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

windowsでGitHub 基礎編

この週末にマスターしようと思い、Gitの本も買ってパラパラ。

プロジェクトでもCVSは使用しているし、
分散リポジトリの考え方をする(=ローカル・リポジトリを作成する)自社ソフトは少し触ったことがあるのでなんとなく分かる!



gitのインストール

GitHub for Windowsをインストール。
おしゃれすぎるインターフェースにくらくら。




コマンドライン(リモートで更新、ローカルに反映)

リモートリポジトリの情報をローカルに変更を反映させます。

リポジトリ上にファイルを作成
  ⇒ブラウザ上の「new File」から作成できます
f:id:sekaiya:20130803143853j:plain




差分を確認

git fetch
 ⇒変更が表示される。反映はしない

C:\GitHub\study_git [master]> git fetch
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/sekaiya/study_git
   e35116d..58bfae6  master     -> origin/master


 

差分の反映

git pull
 ⇒変更が反映されます

C:\GitHub\study_git [master]> git pull
Updating e35116d..58bfae6
Fast-forward
 newFile | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 newFile
C:\GitHub\study_git [master]>

 

コマンドライン(ローカルで更新、リモートで反映)

ローカルでhoge.txt に行を追加してみます。
手順としては以下の通り。

1.ファイルを変更する
2.変更をステージングする
3.変更をローカルリポジトリにcommitする
4.変更をリモートリポジトリにpushする

 

差分の確認

git fetch で変更が表示。

C:\GitHub\study_git [master]> git fetch
C:\GitHub\study_git [master +0 ~1 -0]>

 

差分の表示

git diff
 ⇒ステージしてない かつ コミットしていない作業ツリーの変更を表示

C:\GitHub\study_git [master +0 ~1 -0]> git diff
diff --git a/hoge.txt b/hoge.txt
index 884a19a..3f96d7c 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1 +1,2 @@
+uhyohyo
 uuuu
\ No newline at end of file
C:\GitHub\study_git [master +0 ~1 -0]>

 

変更をステージング

git add .
⇒変更をステージングする。コマンドラインの色が赤から緑色に。

C:\GitHub\study_git [master +0 ~1 -0]> git add
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
C:\GitHub\study_git [master +0 ~1 -0]> git add .
C:\GitHub\study_git [master +0 ~1 -0]>

f:id:sekaiya:20130803143840j:plain

※ステージングされた変更はdiffコマンドから無視される

C:\GitHub\study_git [master +0 ~1 -0]> git diff
C:\GitHub\study_git [master +0 ~1 -0]>

 

ステージングされた変更を確認

git diff --cached

C:\GitHub\study_git [master +0 ~1 -0]> git diff
C:\GitHub\study_git [master +0 ~1 -0]> git diff --cached
diff --git a/hoge.txt b/hoge.txt
index 884a19a..3f96d7c 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1 +1,2 @@
+uhyohyo
 uuuu
\ No newline at end of file
C:\GitHub\study_git [master +0 ~1 -0]>

f:id:sekaiya:20130803143925j:plain



ステージングエリアの情報を含め、作業ツリー上全ての変更を表示

git diff head

C:\GitHub\study_git [master +0 ~1 -0]> git diff head
diff --git a/hoge.txt b/hoge.txt
index 884a19a..3f96d7c 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1 +1,2 @@
+uhyohyo
 uuuu
\ No newline at end of file

 

変更をローカルリポジトリに反映

git commit

C:\GitHub\study_git [master +0 ~1 -0]> git commit
[master af211ea] 3kaime
 1 file changed, 1 insertion(+)
C:\GitHub\study_git [master]>

 

リモートリポジトリにpushする前に差分を確認

git log origin/master..master

C:\GitHub\study_git [master]> git log origin/master..master
commit af211ea99d3ac8a8efeaad5f4afa4e9ec802eb88
Author: sekai <mail@mail>
Date:   Sat Aug 3 14:16:12 2013 +0900

 

変更をリモートリポジトリに反映

git push

C:\GitHub\study_git [master]> git push
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/sekaiya/study_git.git
   58bfae6..af211ea  master -> master
C:\GitHub\study_git [master]>

 

リモートリポジトリ、ブランチを指定してpush

git push https://github.com/sekaiya/iena.git master

C:\GitHub\iena [master]> git push https://github.com/sekaiya/iena.git master
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 611 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
To https://github.com/sekaiya/iena.git
   1a33eef..acddae1  master -> master
C:\GitHub\iena [master]>

とりあえず基礎編おわり。