仮想サーバー(ubuntu14.10)でGitを使ってみる。
Git用のユーザーとグループ作成
sudo groupadd git
sudo adduser -g git git
(useraddしたらフォルダが作成されなくて以下のコマンドでエラーが出た)
とりあえずgitユーザを追加して、みんなgitさんとしてプッシュするという風になったが、
ユーザ数だけサーバーに登録して、下記のユーザー登録を行えば、
コミットログにユーザー名が記録されるので、機能を制限してユーザー登録したほうがいい。
Gitインストール
ubuntuだと以下でインストールできる。
sudo apt-get install git
ユーザー登録
ユーザー登録を行う。公開リポジトリの場合、メールアドレスとか公開されちゃうので注意。
git config --global user.name "username"
git config --global user.mail mail@hoge.com
設定の確認は
git config --global -l
変更したい場合は同じコマンドを使用して上書きする。
Gitリポジトリ作成
任意の場所にディレクトリを作成してgit initする。
これでリポジトリは作成完了。
後はEclipseからssh接続してclone,commit,pushする。
Gitリポジトリの所有権を変更する
Gitリポジトリの所有権がrootだった場合には、gitグループを作成して、所有権を変更する。
クライアント(Eclipse)接続するのに必要なsshの設定
安全の為に鍵認証を行う。
GitではSSHの公開鍵認証を使用しているので、それに倣う。
クライアントPCからCygwin起動して鍵を生成する。
ホストから作成してもOK。
ssh-keygen
生成場所はデフォルト、passheraseを設定すると、パスワードを聞かれるようになる。
鍵をscpコマンドでサーバーに送る。
scp -P [ポート番号] /home/user/.ssh/id_rsa.pub user@server-name
サーバーにリモートアクセスして、以下実行。
mkdir ~/.ssh
chmod 700 ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
chmod 600 ~/authorized_keys
/etc/ssh/sshd_configの以下の行のコメントを外し、authorized_keysを有効にする。
#AuthorizedKeysFile %h/.ssh/athorized_keys
クライアント側からアクセスして確認。
ssh -p [ポート番号] user@server-name
アクセスできたらsshd_configの以下の行を編集し、ルートでのログイン無効、パスワード認証を無効にする。
PermitRootLogin yes -> noに変更する。
#Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes <- ここをコメントを外し、noにする。
複数の鍵を管理する方法(Cygwin)
~/.bashrcに以下を追加して、configファイルを見るようにする。
初期設定のままだと、configファイルは見ないようになっている。
#.ssh/configの読込
alias ssh='ssh -F ~/.ssh/config
alias scp='scp -F ~/.ssh/config
~/.ssh/configファイルを作成する。
vi ~/.ssh/config
内容は簡単に以下。
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa.softserver2
という感じ。
Eclipseでサーバーのリポジトリを取り込む(cloneする)
eclipse->window->preferences->general->network connection->ssh2->generalのssh2 homeに、
先ほど作成した鍵のディレクトリを指定する。
Git Repositoriesの右上のアイコンからリポジトリのクローンを選択して、該当リポジトリをクローンする。
urlは以下のように指定する。
ssh://user@hostname:port/リポジトリの.gitがある場所をフルパス指定
取り込んだリポジトリをインポートする
Git Repositrories画面にクローンしてきたリポジトリの先頭で右クリック->Import Projects
でProject Explorerに該当のプロジェクトがインポート(svnでいうところのチェックアウト)される。
.gitignoreを追加する
最初は.gitignoreファイルはないので、新規作成する。
内容は以下のように設定する。svnのignoreと同じ感じ。
.project
*.~
変更をcommitする
右クリック->Syncronize Workspaceでローカルリポジトリの差分を確認する。
変更に間違いがなければ右クリック->commit
pull
自分のローカルリポジトリをサーバーの最新状態に更新すること。
clone,commitはできるけどpushできない
やってみたこと
サーバー設定で、
git config --get-all core.bare
>false <-falseだったら以下実行
config --bool core.bare true
確認
git config --get-all core.bare
>true <-成功
原因は。。
以下のエラーが出てpushできなかったのだが、
Can't connect to any repository: ssh://inouey@ubuntu-ino:53/var/lib/git/TestGit (Nothing to push.)
これはpushするのはどれなのか指定していなかったせいで出ていたエラーのようだ。
Push Ref Specifications画面で、Source refの選択をして、その右の+Add Specボタンを押す。するとSpecifications for push 画面にpush する候補が表示されるので、選択するとpushできた。
0 件のコメント:
コメントを投稿