このたび、GitをWindowsクライアント・CentOS 7サーバーにインストールしてみました。
インストール手順と簡単なリポジトリの操作方法をまとめました。
GitがSubversionに取って代わりつつある
現在、バージョン管理システムはSubversionからGitに取って代わりつつあります。
上記の出典は、KianLeong.comです。
また、Google Trendによると、
GitはSubversionに取って代わりつつあると言ってよいでしょう。
まぁ、感覚的には当然かなんと思います。
集中サーバー方式Subversionから分散方式にGitに移行するのは時代の当然の流れ。
というわけで、初めて本格的にGitのサーバー構築をしてみました。
Git for Windowsのインストール
からGit for Windowsのインストーラーをダウンロードしてインストールします。
本日現在の最新のインストーラーは、Git-1.9.4-preview20140815.exeです。
インストールは、すべてデフォルト設定で「次へ」を押してインストールしました。
Windowsのスタートメニューを見てみます。
「Git」→「Git Bash」を実行します。
testというディレクトリを作成して、aaa.txtというファイルにaaaと書き込んでGitのローカルリポジトリで管理するための手順は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
$ mkdir test XXXX@XXXX-PC ~ $ cd test XXXX@XXXX-PC ~/test $ echo aaa > aaa.txt XXXX@XXXX-PC ~/test $ git config --global user.name XXXX XXXX@XXXX-PC ~/test $ git config --global user.email XXXX@yyy.zzz XXXX@XXXX-PC ~/test $ git init Initialized empty Git repository in c:/Users/XXXX/test/.git/ XXXX@XXXX-PC ~/test (master) $ git add aaa.txt warning: LF will be replaced by CRLF in aaa.txt. The file will have its original line endings in your working directory. XXXX@XXXX-PC ~/test (master) $ git commit -m "first commit" [master (root-commit) 5a44e6f] first commit warning: LF will be replaced by CRLF in aaa.txt. The file will have its original line endings in your working directory. 1 file changed, 1 insertion(+) create mode 100644 aaa.txt XXXX@XXXX-PC ~/test (master) $ git log commit 5a44e6f3e5089fabb766102662290933b1370506 Author: XXXX <XXXX@yyy.zzz> Date: Sat Sep 20 14:09:44 2014 +0900 first commit XXXX@XXXX-PC ~/test (master) $ git status On branch master nothing to commit, working directory clean XXXX@XXXX-PC ~/test (master) $ git config --global --list gui.recentrepo=C:/Users/XXXX/test user.name=XXXX user.email=XXXX@yyy.zzz XXXX@XXXX-PC ~/test (master) $ |
git config --global user.nameでユーザー設定、git config --global user.emailでemail設定をすることさえ覚えれば超簡単です。
取り急ぎ、覚えるべきコマンドは以下の通りです。
- git config –global グローバル設定
- git init リポジトリの作成
- git add リポジトリに管理するファイルの指定
- git commit リポジトリへコミット
- git status ステータス表示
- git log ログ表示
- git rm ファイルの削除
- git mv ファイルの移動
Gitサーバーの構築
Centos 7でGitのサーバーを構築します。
サーバーのIPアドレスは192.168.141.132とします。
yumでGit関連のパッケージをインストールします。
1 2 3 4 5 6 7 |
# uname -a" decode="true" highlight="true" lang="default" ][root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) 以下のコマンドでgit関連のパッケージをインストールします。 [root@localhost ~]# yum install -y git git-daemon git-all |
/etc/xinet.d/gitというファイルを作成し以下の内容を書き込みます。
⇒ 2015.02.21追記 この作業はおそらく不要と思われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# default: off # description: The git dæmon allows git repositories to be exported using \ # the git:// protocol. service git { disable = no # <= 変更 socket_type = stream wait = no user = nobody server = /usr/libexec/git-core/git-daemon server_args = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose log_on_failure += USERID } |
xinetd.serviceを(再)起動します。
⇒ 2015.02.21追記 この作業はおそらく不要と思われます。
1 2 |
# systemctl enable xinetd.service # systemctl restart xinetd.service |
/var/lib/git/repositoryというフォルダを作成します。
/var/lib/git/repositoryの直下にtestというリポジトリを作成してから、Linuxのグループgitを作成し、/var/lib/git/repository/testのグループ権限をgitに変更しておきます。
# git init --bare --shared でリポジトリ作成ができます。
1 2 3 4 5 6 |
# mkdir test # cd test # git init --bare --shared # cd .. # groupadd git # chgrp -R git test |
CentOS 7サーバーにクライアントからsshでログインできるユーザーxxxxを作成し、グループ権限をgitにしておきます。
Windowsクライアント側のGit BashからGitサーバーのリポジトリへの接続を行うために、以下のコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
$ git remote add origin ssh://XXXX@192.168.141.132/var/lib/git/repository/test XXXX@XXXX-PC ~/test (master) $ git remote -v origin ssh://XXXX@192.168.141.132/var/lib/git/repository/test (fetch) origin ssh://XXXX@192.168.141.132/var/lib/git/repository/test (push) XXXX@XXXX-PC ~/test (master) $ git push warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'. To squelch this message and maintain the current behavior after the default changes, use: git config --global push.default matching To squelch this message and adopt the new behavior now, use: git config --global push.default simple When push.default is set to 'matching', git will push local branches to the remote branches that already exist with the same name. In Git 2.0, Git will default to the more conservative 'simple' behavior, which only pushes the current branch to the corresponding remote branch that 'git pull' uses to update the current branch. See 'git help config' and search for 'push.default' for further information. (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 'current' instead of 'simple' if you sometimes use older versions of Git) XXXX@192.168.141.132's password: No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: failed to push some refs to 'ssh://XXXX@192.168.141.132/var/lib/git/repository/test' XXXX@XXXX-PC ~/test (master) $ git push -u origin master XXXX@192.168.141.132's password: Counting objects: 3, done. Writing objects: 100% (3/3), 206 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://XXXX@192.168.141.132/var/lib/git/repository/test * [new branch] master -> master Branch master set up to track remote branch master from origin. XXXX@XXXX-PC ~/test (master) $ |
最初の$ git pushで失敗するのは、ブランチを指定していないためです。
この時は、以下のエラーが表示されます。
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
取り急ぎ、サーバーとの接続時に覚えるべきコマンドは以下の通りです。
- git remote add <name> <url> リモートリポジトリを追加する
- git push リモートリポジトリにプッシュする
- git pull リポートリポジトリからプルする
- git clone リモートリポジトリからクローンを作る
Gitのおすすめの本
↓Gitのおすすめの本はコチラ
Gitのまとめ
CVSやSubversionなどのバージョン管理を経験した人なら、特に迷うことはないと思います。
Subversionからのリポジトリ移行ツールgit-svnとかもあるようなので、すでにSubversionでリポジトリを管理しているプロジェクトならGitへの移行を進めた方がよいと思います。
これから新しいプロジェクトを管理するなら、迷わずにGitを使いましょう。
コメント
[…] GitをWindowsクライアント・CentOS 7サーバーにインストールしてみました この… […]
[…] GitをWindowsクライアント・CentOS 7サーバーにインストールしてみました この… […]