git

Windows版SourceTreeを設定する

前提条件

  • gitサーバーが既に用意してある(今回はGithub等のホスティングサービスではなく自分で構築したもの)
  • gitリポジトリに既にソースがPushされている状態

やったこと

  • Window版SourceTreeでソースをCloneする
  • 変更を加えてソースをPushする
  • WindowsからPushしたソースを別PC(mac)からPullする

Window版SourceTreeでソースをCloneする

秘密鍵作成

macから秘密鍵をもってきて、[Tools]->[Create or Import SSH Keys]でPuTTY Key Generatorを起動する。loadボタンで秘密鍵を選択し新たに秘密鍵を作成する。
スクリーンショット_010514_075814_PM

秘密鍵登録

[Tools]->[Launch SSH Agent..]からPagentを起動する。Add Keyボタンで作成した秘密鍵を登録し、パスフレーズを入力します。
スクリーンショット_010514_080341_PM

リモートの設定

[Clone/New]からリポジトリを登録します。[Clone]ボタンをクリックするとcloneが始まります。
スクリーンショット_010514_081753_PM

変更を加えてソースをPushする

WindowsからPushしたソースを別PC(mac)からPullする

Gitリポジトリサーバーの構成変更

先日、Gitリポジトリを取り合えず作成したのですが、Gitユーザーでアクセスするようにしたり、SSHの鍵も作りなおした。

suusuke – blog – CentOS5へGitリポジトリの作成.

gitグループから外す

wheelグループのみに戻した。

$ usermod -G wheel suusuke

gitユーザーの作成

既にgitグループを作成していたので、-gでグループを指定して追加する。

$ adduser -g git git

ssh鍵の作成と設定

localにて

$ ssh-keygen

作成した、公開鍵(id_rsa.pub)をコピーする。

remoteにて

$ su - git
$ mkdir ~/.ssh/
$ vi ~/.ssh/authorized_keys #公開鍵(id_rsa.pub)をコピペ
$ chmod 700 /home/git/.ssh
$ chmod 600 /home/git/.ssh/*

リモートの変更

$ git remote -v
origin	ssh://[username]@[servername]:[port]/var/lib/git/repos/project.git (fetch)
origin	ssh://[username]@[servername]:[port]/var/lib/git/repos/project.git (push)

$ git remote rm origin
$ git remote add origin ssh://git@[servername]:[port]/var/lib/git/repos/project.git

pushを試してみて成功。

gitユーザーのログインシェルをgit-shellに変更するとよりセキュリティ的に良いみたいだけど、シェル変更しただけだとエラーになってしまったので取り合えず変更しなかった。

参考サイト

Git – サーバーのセットアップ.

CentOS5へGitリポジトリの作成

会社と自宅で作業しているとソースコード同期するに、いちいちサーバーから取ってきてとかっていうのやってたのですが、めんどくさいなと思って折角なのでGitサーバー立てることにした時の覚書。

環境

OS CentOS5.10

目次

  1. Gitインストール
  2. クライアントからソースコミット

Gitインストール

yumリポジトリ追加

$ wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
$ rpm -Uvh rpmforge-release-0.5.3-1.el5.rf.i386.rpm 

git-daemonインストール

gitは既にインストールされていたのでdaemonのみインストール

$ yum install git-daemon --enablerepo=rpmforge

xinetd設定

gitプロトコルでアクセスした場合に、git-daemonが起動するようにxinetdに設定ファイルを作成する。

$ cp /etc/xinetd.d/git /etc/xinetd.d/git-daemon
$ vi /etc/xinetd.d/git-daemon

# default: off
# description: The git dæmon allows git repositories to be exported using \
#       the git:// protocol.

service git
{
        disable         = no     #noに変更
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/git-daemon
        server_args     = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose
        log_on_failure  += USERID
        # xinetd does not enable IPv6 by default
        flags           = IPv6
}

$ /etc/rc.d/init.d/xinetd restart #再起動

gitレポジトリ作成

/var/lib/git/の下にgitのレポジトリを作成した。

$ mkdir /var/lib/git/repos
$ mkdir /var/lib/git/repos/project.git
$ cd /var/lib/git/repos/project.git
$ git --bare init --shared
Initialized empty shared Git repository in /var/lib/git/repos/project.git/
  • –bare:git に対するオプション。管理ファイル等を作成する。
  • –shared:init に対するオプション。グループ書きこみ権限を追加する。

git用グループ作成

$ groupadd git
$ usermod -G wheel,git suusuke
$ chown -R root.git /var/lib/git/

wheelグループから外れないように、wheelも追加する。

クライアントからソースコミット

ローカルリポジトリ作成

$ cd ~/home/project/
$ git init

ローカルリポジトリコミット

$ git add .
$ git commit -m "First Commit"

リモートリポジトリの登録

$ git remote add origin ssh://[username]@[servername]:[port]/var/lib/git/repos/project.git

リモートリポジトリへpush

$ git push origin master

参考

gitweb

引用元: CentOS – Git サーバ構築! – mk-mode BLOG.

取り合えず構築した感じなので、後は会社のPCからgit cloneを試してみる。

bitbucketでプロジェクト管理

gitを使ったホスティングサービスだと、githubが一番有名ですが、bitbucketというgitとmercurialも使えるホスティングサービスもあります。

通常であれば、githubでも十分なのですが、bitbucketはプライベートリポジトリが無料で作れるところがいいなと思っています。

Free source code hosting — Bitbucket.

目次

  • bitbucketでプライベートリポジトリを作る
  • ソースコードをpushする

bitbucketでプライベートリポジトリを作る

Privateにチェックをいれて、Repository typeをGitにします。
今回は既存のiPhoneアプリのソースをバージョン管理しようと思うので、LanguageにはObjective-Cを選択します。

ソースコードをpushする

既存のソースコードはgitで管理されてないプロジェクトなので、git initでローカルにリポジトリを作成して、.gitignoreを作成し、バージョン管理しないファイルタイプを設定します。
git remote addでリモートリポジトリを追加します。(今回はoriginという名前で追加)
あとは、ローカルにコミットしてリモートリポジトリにプッシュすれば終了です。

[suusuke@macbook ~]$ cd ~/iPhone/BeamsFlickr/
[suusuke@macbook BeamsFlickr]$ git init
[suusuke@macbook BeamsFlickr]$ vi .gitignore

# hidden/temp files
.DS Store
*.swp
*~.nib
 
# Build dir
build/

# Xcode project files except for the project file
*.xcodeproj/*
!*.xcodeproj/project.pbxproj

# Windows image thumbnail file
Thumbs.db

# User-specific project settings
*.mode1v3
*.mode2v3

[suusuke@macbook BeamsFlickr]$ git remote add origin [httpsのurl]
[suusuke@macbook BeamsFlickr]$ git commit -m "First Commit."
[suusuke@macbook BeamsFlickr]$ git push -u origin master

dotfileをgithubで管理する

今まではDropboxにいれてたから良いかーと、思ってたんですが履歴管理できるといいなーと思ってgithubにpushしてみることにしました。

※githubに入っているのはmac用のdotfileでwindowsやubuntu等で同じ環境使う場合はDropboxのファイルを使う

ホームディレクトリのdotfileをgithubにpushする

事前にgithubでリポジトリを新たに作成しておきます。今回はdotfilesというリポジトリを作成しました。

重要なのは.gitignoreでdotfileにpushしたいファイルを指定するところです。

$ cd ~
$ vi .gitignore

#全てのファイルを除外
/*
#全ての隠しファイルを除外
/*.

!/.bashrc
!/.bash_profle
!/.profile
!/.emacs
!/.emacs.d
!/.vim
!/.vimrc
!/.gitconfig
!/.gitignore
!/.screenrc

$ git init
$ git add .
$ git commit -m "first commit."
$ git remote add origin git@github.com:suusuke/dotfiles.git
$ git push -u origin master

https://github.com/suusuke/dotfiles

done.


追記
vimのプラグインをvim-pathogenで管理するようにしたのでその時のメモ。
何が出来るようになるかというと、~/.vim/bundleというディレクトリでプラグインの管理ができるようになるので、管理が分かりやすくなります。

こちらからスクリプトをダウンロードして~/.vim/autoload/にいれて~/.vimrc

call pathogen#runtime_append_all_bundles()

を記述しておく。

~/.vim/bundleディレクトリを作成しておく。

これだけでおーけー。

bundleという一つのディレクトリでプラグインの管理ができるので、githubから簡単にプラグインのインストール、アップデート可能になります。

早速、プラグインをインストールしてみました。

$ git submodule add git://github.com/tpope/vim-surround.git .vim/bundle/vim-surround
$ git submodule add git://github.com/scrooloose/nerdcommenter.git .vim/bundle/nerdcommenter
$ git submodule add git://github.com/Shougo/neocomplcache.git .vim/bundle/neocomplcache

設定は.vimrcに書けばおーけー。

お疲れさまでした。

はじめてのgithub

githubは分散型バージョン管理システムのホスティングサービスです。
今回、Cutegramというinstagramに投稿されている可愛い写真をダラ見するサイトをつくってみたので、githubに登録してみました。

アカウントの作成とgitのインストール

まずはアカウント作成ページからアカウントを作成します。

macportsでgitをインストールします。

$sudo port install git-core

windowsの場合もこちらからダウンロードできるようです。

gitの初期設定

ユーザー名、メールアドレスを登録します。

$ git config --global user.name "Firstname LASTNAME"
$ git config --global user.email example@example.com

設定情報は~/.gitconfigに保存されます。

ソースのコミット

コミットするソースファイルがあるディレクトリに移動してgit initを実行します。

$ cd cutegram
$ git init

$ ll -a
drwxr-xr-x  12 suusuke  admin   408  5 24 14:51 .git

.gitというディレクトリが出来ます。

ここで、コミットしたくないファイルがある場合は.gitignoreというファイルを作成しそこに記述します。

$ vi .gitignore
.DS_Store

ローカル環境へコミット

git addコマンドでコミットします。

$ git add .
$ git commit -m "first commit"

SSHの公開鍵・秘密鍵の作成

ssh-keygenコマンドでsshの鍵を作成します。(rsa)

$ ssh-keygen -t rsa

作成されるとルートディレクトリの.sshに公開鍵と秘密鍵が作成されます。

$ ll ~/.ssh/
-rw-------  1 suusuke  staff  1743  5 24 14:49 id_rsa
-rw-r--r--  1 suusuke  staff   397  5 24 14:39 id_rsa.pub

公開鍵(id_rsa.pub)をgithubのアカウント設定ページに設定します。(コピペ)

githubリポジトリ作成

リポジトリ作成ページからリポジトリを作成します。

作成したら、最後にcontinueのリンクをクリックします。

githubにpushする

ローカルにコミットしたソースファイルをgithubにpushします。

$ git remote add origin git@github.com:username/cutegram.git
$ git push origin master