git(ギット)とは?

gitインストール

# yum -y update
# yum -y install git
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
No package git available.
Nothing to do
# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/i386/epel-release-5-4.noarch.rpm 
# rpm -ivh epel-release-5-4.noarch.rpm
# vi /etc/yum.repos.d/epel.repo
--------------------
   [epel]
   ...
   enabled=1
   priority=1
   ...
--------------------
# yum -y install git
# git --version
git version 1.8.2.1

バージョン管理の流れ

  1. 作業ディレクトリ
  2. ステージングエリア(インデックス)
  3. リポジトリ(ローカル、リモート)

gitの設定

$ git config --global user.name "Yuji Shimojo"
$ git config --global user.email "yjshimojo@gmail.com"
$ git config --global color.ui true
$ git config -l
user.name=Yuji Shimojo
user.email=yjshimojo@gmail.com
color.ui=true
$ git config --help
$ git help config

リポジトリへのコミット

$ mkdir myweb
$ cd myweb/
$ git init
Initialized empty Git repository in /home/yuji/myweb/.git/
$ vi index.html
--------------------
    line 1
--------------------
$ cat index.html
line 1
$ git add index.html
$ git commit
--------------------
    initial commit // コミットメッセージ(任意)
--------------------
[master (root-commit) 12662e4] initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 index.html

コミット履歴(ログ)の確認・オプション

$ git log
commit 12662e4f226f299708ddb5c89274739fd355f9b8 // 一意のコミットID
Author: Yuji Shimojo <yjshimojo@gmail.com>
Date:   Sun Sep 20 03:03:31 2015 +0900
    initial commit          // コミットメッセージ
$ git log --oneline
12662e4 initial commit
$ git log -p
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..89b24ec
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+line 1
$ git log --stat
commit 12662e4f226f299708ddb5c89274739fd355f9b8
Author: Yuji Shimojo <yjshimojo@gmail.com>
Date:   Sun Sep 20 03:03:31 2015 +0900

    initial commit

 index.html | 1 +
 1 file changed, 1 insertion(+)

状態確認

$ vi index.html
--------------------
    line 1
    line 2
--------------------
$ git status
# On branch master
# Changes not staged for commit:        // ステージング未反映、未コミット
#   (use "git add <file>..." to update what will be committed)    // git addでステージングに反映可能
#   (use "git checkout -- <file>..." to discard changes in working directory)    // git checkoutで変更前の状態に戻すことが可能
#
#	modified:   index.html
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- index.html
$ cat index.html
line 1

差分確認

$ git diff
diff --git a/index.html b/index.html
index 89b24ec..7bba8c8 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
 line 1
+line 2
$ git add index.html    // ステージングエリアへ追加
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   index.html
#
$ git diff --cached
diff --git a/index.html b/index.html
index 89b24ec..7bba8c8 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
 line 1
+line 2

gitでのファイル操作

$ git add [filename1] [filename2] [filename3] ...
$ git add .
$ git rm index.html
$ git mv file1 file2

git管理からの除外設定

$ ls
error.log  index.html
$ vi .giignore
--------------------
  *.log
--------------------

直前のコミットを変更

$ git commit -m "ライン2を追加"
[master 51e7ce3] ライン2を追加
 1 file changed, 1 insertion(+)
$ git commit --amend

過去のバージョンに戻る

$ git reset --hard HEAD
$ git reset --hard HEAD^
$ git reset --hard 12662e4f226f
$ git reset --hard ORIG_HEAD

ブランチを活用

$ git branch
$ git branch hoge
$ git checkout hoge
Switched to branch 'hoge'

ブランチをマージ

$ git branch
  hoge
* master
$ git merge hoge
Updating 556ff5f..054edfd
Fast-forward
 myscript.js | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 myscript.js
$ git branch -d hoge
Deleted branch hoge (was 054edfd).

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS