Program LOG

勉強した内容をまとめ中。。。間違ってたら教えて。。。

Git入門

仕事が忙しすぎて、全然更新できませんでした。。。
ようやく、落ち着いてきたので、
今回はGitについて書いてみようと思います。
昔からSVNに慣れてしまっていて、中々Gitに移行する事が出来ずにいます。(現在もw)
ですが、近年出来るプログラマーは、こぞってGitを勧めてきます。
そしてGitを使い始めるようになってきました。
今回は入門編として、概要と、インストール方法、基本的なコマンドを調べてみましたので、まとめてみます。

Gitとは?

Git(ギット またはジット [要出典])は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。 もとはLinuxカーネルソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。 Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。 現在のメンテナンスは濱野純 (Junio C Hamano) が担当している。

ふーんって感じですねw
まぁ、分散型のファイルバージョン管理ツールって所ですよね?

SVN vs Git

結局SVNとGitって何が違うんだろうってところですね!
SVNは小規模で開発する時は、何の問題も無く運用できるんですが、
フェーズを分けた開発や、グループで開発するのは、Gitのがいいって良く聞きます。
大きな点で、違うところは、ローカルとグローバルの2種類にファイルが管理されているって所だと思います。
ローカルにコミットしたファイル群をプッシュという形でグローバルにアップするという事です。

確かに、開発中のファイル郡ってSVNだと扱いにくい場合がありますよね?
でも、プッシュさえしなければ、コミットしておく事が出来るので、非常に便利だと思います。
まぁ、それ以外にもGithubなどのサイトとの連携が非常に効率的に行える点も高評価な点だと思います。

検証環境を用意する。

さて、それでは早速Gitのインストールを行いたいと思いますが、
バイナリでのインストールも可能なのですし、Cygwinで行いたい場合も、
Cygwinをインストールする際に入れていると思います。
また、インストールしていない場合は、apt-cyg install gitでインストールできると思いますので、
Windows版に関しては、インストール手順をスキップしておきたいと思います。
それでは早速vagrant上に検証環境を用意したいと思います。

  • ファイル管理用

-- gitdev

-- gitserver

$ mkdir gitdev
$ mkdir gitserver
$ cd ./gitserver
$ vagrant init centos
$ vim Vagrantfile
vim 26) config.vm.network "private_network", ip: "192.168.33.19"
$ vagrant up
$ vagrant ssh
[vagrant@localhost ~]# sudo su
[root@localhost vagrant]# service iptables stop
[root@localhost vagrant]# chkconfig iptables off

リモートリポジトリを用意する。

それでは早速gitサーバーを用意していこうと思います。
gitをインストールすれば、すぐにでもリモートリポジトリを作成する事が可能なようです。

[root@localhost vagrant]# yum install -y git
[root@localhost vagrant]# git --version
git version 1.7.1
[root@localhost vagrant]# cd /usr/local/
[root@localhost local]# mkdir git
[root@localhost local]# cd ./git
[root@localhost local]# mkdir TestProject.git
[root@localhost git]# cd TestProject.git
[root@localhost git]# git --bare init --shared
Initialized empty shared Git repository in /usr/local/git/TestProject.git/
[root@localhost git]# chown vagrant:vagrant -R /usr/local/git

クライアント側を設定する。

次に、クライアント側を設定していきましょう!
今回はvagrantで構築しているので、sshのキーフレーズに関しては以下のようにして設定してしまいます。

$ vagrant ssh-config --host gitdev >> ~/.ssh/config

お次は、クライアント側でローカルリポジトリを作成してみましょう!
先ほど作成した、gitdevというディレクトリを使用します。

$ cd ../gitdev
$ git init
Initialized empty Git repository in /cygdrive/c/Users/takumi-main/Desktop/dev/gitdev/.git/

ローカルリポジトリが出来たので、適当にファイルを作成していきます。
そして、コミットしておきます。

$ echo test > test.txt
$ ll
total 9
drwx------+ 1 takumi-main None 0 Jul 25 17:09 .
drwx------+ 1 takumi-main None 0 Jul 25 11:52 ..
drwxr-xr-x+ 1 takumi-main None 0 Jul 25 17:08 .git
-rw-r--r--+ 1 takumi-main None 5 Jul 25 17:09 test.txt
$ git add .
$ git status
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   test.txt
$ git commit -m "first commit"
[master (root-commit) 38634eb] first commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 test.txt

そして、お次は、リモートリポジトリを追加します。

$ git remote add origin ssh://gitdev/usr/local/git/TestProject.git
$ git remote -v
origin  ssh://gitdev/usr/local/git/TestProject.git (fetch)
origin  ssh://gitdev/usr/local/git/TestProject.git (push)

最後に、リモートへプッシュします。

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://gitdev/usr/local/git/TestProject.git
 * [new branch]      master -> master

いけたっぽいです!

リモートリポジトリからCloneしてくる。

お次は、リモートからプッシュした内容をクローンしてきます。

$ cd ../
$ git clone ssh://gitdev/usr/local/git/TestProject.git gitdev2
$ ll gitdev2
total 9
drwxr-xr-x+ 1 takumi-main None 0 Jul 25 17:20 .
drwxr-xr-x+ 1 takumi-main None 0 Jul 25 17:18 ..
drwxr-xr-x+ 1 takumi-main None 0 Jul 25 17:20 .git
-rw-r--r--  1 takumi-main None 5 Jul 25 17:20 test.txt

無事にファイルをダウンロードできました!
仮想マシンでの操作は対して難しくありませんね!
後は、どのように使うかって所で、オススメなコマンドというのを
見つけましたので、どんなことが出来るかってくらいは把握しておこうと思います。

Gitの簡単なコマンド集

  • git init
  • git clone
  • git fsck
  • git gc
    • リポジトリ内の不要なオブジェクトを削除し、最適化を行う
  • git status
    • 変更が加えられたファイルを表示する
  • git diff
    • ファイルに加えられた変更点をdiff形式で表示する
  • git add
    • コミットするファイルを指定する
  • git commit
    • 変更点をコミットする
  • git log
    • コミットログを閲覧する
  • git reset
    • 直前のコミットを取り消す
  • git revert
    • 作業ツリーを指定したコミット時点の状態にまで戻す
  • git branch
    • ブランチ情報の表示およびブランチの作成
  • git checkout
    • ブランチの切り替え
  • git show-branch
    • ブランチの作成/変更/マージ履歴を表示
  • git merge
    • ローカルブランチのマージを行う
  • git tag
    • コミットにタグを付ける
  • git stash
    • 現在の作業ツリーの状態を一時的に保管する
  • git rebase
    • ブランチの派生元(上流)を変更する
  • git pull
  • git push

詳しい内容は下記サイトにものすごく詳しい内容が記載されているので、
そちらを確認してもらえればと思います!
Gitを使いこなすための20のコマンド | SourceForge.JP Magazine

ひとまず、リモートリポジトリとローカルリポジトリを同期して、
ファイルを管理する事が出来るようになりました!
これを機会にGitをもっと触ってみようかと思います。。。!

使用環境