ラベル Git の投稿を表示しています。 すべての投稿を表示
ラベル Git の投稿を表示しています。 すべての投稿を表示

2013年12月9日月曜日

Windows上にGitのベアリポジトリを作成してMACからpushするまでの俺メモ

Windows上のリモートリポジトリにMACからアクセスする為にはWindows側でGitDaemonを起動しておくことがミソのようです。(gitプロトコルで接続する場合)


[手順概要:Windows側]

  1. Gitをインストールする
  2. TortoiseGitをインストールする(任意)
  3. スタートアップにGitDaemonを起動させるバッチファイルを配置する
  4. 再起動してバッチファイルからGitDaemonを起動させる
  5. ベアリポジトリを作成する
[手順概要:Mac側]
[手順詳細:Windows側]

1.Gitをインストールする

 1.1.Gitの本家サイトからインストーラーをダウンロードしてインストールします。

2.TortoiseGitをインストールする(任意)

2.1.TortoiseGitのインストールは必須ではありませんが非常に使い勝手が良いのでインストールしておきましょう。
 2.2.TortoiseGitの本家サイトからインストーラーをダウンロードしてインストールします。
 2.3.必要であれば日本語言語化ファイル配布サイトから日本語化ファイルをダウンロードしてインストールします。

3.スタートアップにGitDaemonを起動させるバッチファイルを配置する

3.1.このバッチファイルのテンプレート内容をコピペ後修正したRunGitDaemon.batを作成する
 例)
@echo off

rem -------------------------------------------------
rem Run Git Daemon bat for msysGit Ver1.0
rem -------------------------------------------------
rem Git Daemon using port 9418
rem -------------------------------------------------

set gitCommandDrive=C:
set gitCommandPath=%gitCommandDrive%\"Program Files (x86)"\Git\bin

set gitBaseDrive=D:
set gitBasePath=%gitBaseDrive%\manabe\public\Git\repo

rem Run Git Daemon
%gitCommandPath%\git daemon --verbose --export-all --enable=receive-pack --base-path=%gitBasePath%

exit

 3.2.スタートアップフォルダにバッチファイルを配置する
 スタートアップの場所の例)
C:\Users\Manabe\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

 スタートメニューから開くことも可能



4.再起動してバッチファイルからGitDaemonを起動させる

4.1.Windowsを再起動させる
 再起動後に下記の画面がでていたらOK


5.ベアリポジトリを作成する

5.1.コマンドラインを使って作成する場合
  5.1.1.Git Bashを起動する
  5.1.2.ベアリポジトリを作成するフォルダーへ移動する
  5.1.3.ベアリポジトリ用のフォルダーを作成し初期化する
  例)
    $mkdir hoge.git
    $cd hoge.git
    $git --bare init --share

 5.2.TortoiseGitを使って作成する場合
  5.2.1.エクスプローラーを使用して共有フォルダ配下にベアリポジトリ用のフォルダーを作成する

  5.2.2.作成したフォルダ内でマウスの右クリックメニューから[Git Create repository here]を選択する

  5.2.3.Make it Bareにチェックを入れてOKをクリック

[手順詳細:Mac側]

1.ベアリポジトリへ接続可能か確認する

1.1.ターミナルからコマンドを実行して確認する。エラーが表示されなければOK
  $git ls-remote git://192.168.12.10/hoge.git

2.リモートリポジトリを設定してpushする

2.1.pushする.gitがあるフォルダーへ移動
 例)
  $cd /path/to/my/repo/hoge

 2.2.リモートリポジトリを設定
 例)
  $git remote add origin git://192.168.12.10/hoge.git

 2.3.pushする
 例)
  $git push -u origin --all
  $git push -u origin --tags

 2.4.README.mdを追加
 例)
  $echo "# This is my README" >> README.md
  $git add README.md
  $git commit -m "First commit. Adding a README."
  $git push -u origin master

[リモートからcloneする]

$git clone git://192.168.12.10/hoge.git

このエントリーをはてなブックマークに追加

2013年5月1日水曜日

ラズベリーパイにGitをインストールする方法俺メモ

ラズベリーパイにGitをインストールする方法をメモっとく

[手順概要]

  1. piでログインする(sudoの権限があるユーザー)
  2. gettextをインストールする(Gitインストールにmsgfmtコマンドが必要なので)
  3. Gitをインストールする

[手順詳細]

1.piでログインする

 全ユーザーでGitを使用したいので「/usr/lib/git」へインストールします。
 その為にsudo権限のあるユーザーでログインする必要があります。

2.gettextをインストールする

   2.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz
      $tar zxvf gettext-0.18.2.tar.gz 
      $./configure --prefix=/usr --disable-csharp
      $make
      $sudo make install
      ※gettext-0.18.2.tar.gzはインストールするバージョンによって変わります

3.Gitをインストールする

   3.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://git-core.googlecode.com/files/git-1.8.2.1.tar.gz
      $tar xvfz git-1.8.2.1.tar.gz
      $cd git-1.8.2.1/
      $sudo mkdir -p /usr/lib/git
      $sudo ./configure --prefix=/usr/lib/git
      $sudo make all install
      $cd /usr/bin/
      $sudo ln -s /usr/lib/git/bin/git ./git
      ※git-1.8.2.1.tar.gzはインストールするバージョンによって変わります

このエントリーをはてなブックマークに追加

2013年1月19日土曜日

gitでブランチをマージした時にコンフリクトを起こしてしまったら

バージョン管理システムを使っているといつか出会う中ボス的な存在がコンフリクトです。
gitでマージした時にコンフリクトが起きた場合は次の手順で対処できます。

  1. お・ち・つ・け・!
  2. コンフリクトを手動でマージします。(マージ元、マージ先、どちらかを採用するコマンドもあります。)
  3. 「$git add .」コマンド等でマージしたファイルをステージングします。
  4. 全てのコンフリクトが解決したらgit statusコマンドの表示がAll conflicts fixed but you are still merging.に変わります。
  5. 「$git commit」コマンドでコミットします。
  6. コンフリクトが頻繁に起きてしまう場合、開発運用に問題がある可能性が高いので見直してみましょう


おまけ1

手動マージ中に「やっぱやんぴ、マージを最初からやり直したい!」となった場合は次のコマンドを使います。
[ファイル指定]
$git checkout --merge hoge.txt

[カレントディレクリ配下すべて]
$git checkout --merge .

おまけ2

マージ元、マージ先、の一方を採用するにはマージ中にcheckoutコマンドを使用します。
例)topicというブランチをmasterへマージした場合
1.masterの内容を採用する場合
$git checkout --ours ファイル名

2.topicの内容を採用する場合
$git checkout --theirs ファイル名

おまけ3

$git pullでコンフリクトが起きてしまった場合
例えば
$git pull master origin/master

$git fetch origin/master
$git merge origin/master
をまとめて実行しているだけなのです。
つまり、本記事のブランチマージでコンフリクトが起きた場合の対処と同様の方法で解決できるはずです。

このエントリーをはてなブックマークに追加

2013年1月18日金曜日

git bisectをつかって不具合が発生したリビジョン(コミット)を見つける

バージョン管理システムを導入する理由の一つとして、
動いていたバージョン動かなくなったバージョンの差分を取る事でバグを早期発見早期治療できるから」
というのがあります。
git bisectコマンドを利用する事で、動かなくなったバージョン簡単に特定することができます。

[git bisectコマンド使い方]
1.作業領域がクリーンな状態かチェック
$git status

  1.1.作業領域に何かしらの変更が加えられている場合は退避する
  $git stash

2.bisectを開始する
$git bisect start

3.HEADが動かなくなっているとgitに伝える
$git bisect bad

4.正常に動作しているリビジョンをgitに伝える
$git bisect good 23b95e2

5.実行すると次に動作確認すべきリビジョンが勝手にチェックアウトされます。

6.チェックアウトされたリビジョンの動作確認を行う。

  6.1.正常に動作しなかった場合はgitにその旨を伝える
  $git bisect bad

  6.2.正常に動作した場合はgitにその旨を伝える
  $git bisect good

7.最初に正常に動作しなかったリビジョンが見つかるまで「5.〜6.」を繰り返します。

8.最初に正常に動作しなかったリビジョンが見つかった場合は次のようなメッセージが出力されます。

f30d46efa8f53b7e1ff1e59c3bf854fcd85de40 is the first bad commit

9.bisectを終了する
$git bisect reset

10.作業領域を退避していた場合は復旧させる
$git stash pop




このエントリーをはてなブックマークに追加

2013年1月11日金曜日

Git初心者がGitを導入する為のおすすめリンク集


Git関連のリンク集をメモっとく

このエントリーをはてなブックマークに追加

2012年11月30日金曜日

fuelPHP導入マニュアル俺メモ


[前提条件]

  1. MAC環境でのマニュアルである
  2. fuelPHP1.4を使用したマニュアルである
  3. MAMPのインストールと環境設定が完了している
  4. エクリプスのインストールと環境設定が完了している
  5. PDTがインストールされている
  6. MakeGoodがインストールされている
  7. PHPUnitがインストールされている
  8. Gitがインストールされている
  9. curlがインストールされている
  10. oilがインストールされている
  11. ここまでの参考文献:初めてのフレームワークとしてのfuelPHP
  12. エクリプス用のGitプラグインEGitがインストールされている
  13. 「~/work/」配下に「hoge」という名前のプロジェクトを作成するマニュアルとする
  14. 前提条件が多いからとあきらめないこと。あきらめたらそこd(ry

[導入マニュアル目次]

  1. fuelPHPのインストール
  2. MAMPからアクセス出来るようにシンボリックリンクを作成する
  3. ブラウザでの接続確認
  4. エクリプスにプロジェクトをインポートする
  5. 「hoge/docs」フォルダをプロジェクト用のフォルダに改造する(改造するより別途docs_devとかを掘ったほうが良さげです)
  6. config.phpの変更
  7. 自動補完の設定
  8. MakeGoodの設定
  9. MakeGoodの設定確認
  10. Goutteのインストール
  11. セッションの保存先をcookieからdbへ変更する
  12. fuelPHPのGitコミットログをまとめる(工事中)
  13. Bitbucketへpushする
  14. Bitbucketからcloneする

[導入マニュアル]

1.fuelPHPのインストール

$cd ~/work
$oil create hoge

2.MAMPからアクセス出来るようにシンボリックリンクを作成する

「/Applications/」にMAMPがインストールされている場合
$cd /Applications/MAMP/htdocs/
$ln -s ~/work/hoge/public hoge

3.ブラウザでの接続確認

ブラウザ(safari、chrome等)を起動してhttp://localhost/hoge/にアクセスする。
次のようなwelcome画面が表示されればOK
fuelPHPのインストール完了確認スクリーンショット

4.エクリプリスにプロジェクトをインポートする

 4.1.エクリプスを起動する
 4.2.メニューからimportを選択
エクリプスにプロジェクトをインポートするメニューのスクリーンショット

 4.3.Projects from Gitを選択してNext>をクリック
Gitのプロジェクトをインポートするメニューのスクリーンショット

 4.4.Localをダブルクリック
ローカルのプロジェクトをインポートするメニューのスクリーンショット

 4.5.右上のaddボタンでhogeを追加後選択してFinishをクリック

プロジェクトフォルダを選択するメニューのスクリーンショット

 4.6.PHP Projectを選んでNext>をクリック
プロジェクトの言語を選択するメニューのスクリーンショット

 4.7.Create project at existing location (from existing source)を選択し、Browserボタンからhogeを選択語Finishをクリック
既存のプロジェクトを選択するメニューのスクリーンショット

5.「hoge/docs」フォルダをプロジェクト用のフォルダに改造する

「hoge/docs」にfuelPHP関連のドキュメントが置かれているが特に必要ないので中身を削除してプロジェクト用のドキュメントを配置出来るようにする。
$cd ~/work/hoge
$git rm --cached docs
$rm -rf docs
$mkdir docs
$touch docs/.gitkeep
gitで管理したくないドキュメントがある場合は「docs/.gitignore」ファイルを作成し追加する。

6.config.phpの変更

「fuel/app/config/config.php」を次のように変更する。


7.自動補完の設定

「hoge/fuel/app/_autocomplete.php」を作成する。
内容についてははじめてのフレームワークとしてのfuelPHPを参照

8.MakeGoodの設定

8.1.fuel/core/bootstrap_phpunit.php」
  「fuel/app/bootstrap_makegood.php」にコピーして変更する。
内容についてははじめてのフレームワークとしてのfuelPHPを参照

 8.2.hogeのプロジェクトフォルダを右クリックしPropertiesをクリックする。
プロジェクトのプロパティ設定画面を起動するメニューのスクリーンショット

 8.3.MakeGoodを選択して次のように設定してApplyをクリック
MakeGoodの設定をする画面のスクリーンショット

8.4.PHP Include Pathを選択して次のように設定してFinishをクリック
includeパスの設定をする画面のスクリーンショット


 9.MakeGoodの設定確認

9.1.「fuel/app/tests/makegoodsetup_Test.php」を作成し次のコードを記述する。

 9.2. makegoodsetup_Test.phpを右クリックし、[全てのテストの実行]をクリックする。
テストを実行するメニューのスクリーンショット

 9.3.MakeGoodの結果が次のようになればOK
テスト結果のスクリーンショット

10.Goutteのインストール

$cd ~/work/hoge
$git submodule add git://github.com/fabpot/Goutte.git fuel/app/vendor/Goutte

11.セッションの保存先をcookieからdbへ変更する。(※別途DBの設定が必要)

デイフォルトのセッション保存先がcookieになっていますが、容量不足でエラーになる場合があるので保存先をDBへ変更します。
 11.1.「fuel/core/config/session.php」を「fuel/app/config/」にコピーして編集する。
 11.2.oilコマンドでセッション保存用テーブルを作成する。
 $cd ~/work/hoge
 $oil r session:create

12.fuelPHPのGitコミットログをまとめる

fuelPHPの開発コミットログは邪魔なので一つにまとめる
(工事中)

13.Bitbucketへpushする

13.1.Bitbucketにリポジトリを作成する

 13.2.commitする
 $git add --all
 $git commit -a -m 'message'


 13.3.「hoge」をpushする
 $git remote set-url origin https://dummy@bitbucket.org/dummy/hoge.git
 $git branch -m 1.4/master master
 $git push -u origin master

14.Bitbucketからcloneする

cloneした後サブモジュールをインストールする必要がある。
$cd ~/work
$mv hoge hoge_old
$git clone https://dummy@bitbucket.org/dummy/hoge.git
$cd hoge
$git submodule init
$git submodule update





このエントリーをはてなブックマークに追加

2012年11月8日木曜日

xcodeプロジェクトをgitで管理する際に無視させるディレクトリとファイル


.DS_Store
*.xcodeproj/*.mode1v3
*.xcodeproj/*.pbxuser
*.xcodeproj/*.xcworkspace
*.xcodeproj/xcuserdata/
*.xcworkspace/xcuserdata/
build/
.svn/
*.swp
*.nib
Thumbs.db
*.[oa]
*~
*.bak





◎無視させるようにする手順

  1. ターミナルを起動する
  2. $git config --global core.excludesfile $HOME/.gitexclude
  3. .gitexcludeファイルに無視するディレクトリやファイルを記述する

※上記の方法で無視させた場合、環境依存になってしまう(MAC毎に設定が変わってしまう)為、プロジェクト毎に.gitignoreを配置するのが良いでしょう

このエントリーをはてなブックマークに追加

2012年11月5日月曜日

Git逆引きリファレンスぅ


◎変更内容を全て破棄する

全ての変更内容(ステージと作業フォルダ)がHEADつまり最新のコミット内容に置き換わります。
--hardオプションをつけることで作業フォルダの内容も対象となります。
つまり「git reset HEAD」とした場合ステージ(index)の内容だけが最新のコミット内容に置き換わります。

◎ディレクトリ(フォルダ)配下をGitで管理出来るようにする

Gitで管理したいディレクトリへ移動して本コマンドを実行することで、配下の全てのフォルダ及びファイルを管理する必要最低限の準備が整います。
※1 本コマンドを実行後に管理対象とするフォルダ及びファイルを指定する必要があります。

◎ディレクトリ(フォルダ)配下の全てのディレクトリ及びファイルをステージ(index)に追加する

Gitで管理したいディレクトリへ移動して本コマンドを実行すると、配下の全てのファイルをGit管理下に置く事が出来ます。 addは変更内容を追加するようなイメージです。
※1 .gitignore によって無視されているファイルは無視されます。
※2 --updateの機能も同時に実行されます。

◎作業フォルダ配下の全ての追加・変更・削除をステージ(index)に登録する

ここでいう作業フォルダとは.gitがあるフォルダで、「git init」を実行したフォルダを示します。 「$ls -a」で.gitを確認する事が出来ます。 ※1 「git add -A」でも同じ事が可能

◎ディレクトリ(フォルダ)を指定してステージ(index)に追加する

addはステージ(index)に変更内容を追加するようなイメージです。これを「ステージする」とか「ステージング」といいます。
新しいファイルを追加するという変更内容を追加しています。
※1 「git add .」でカレントディレクトリを指定出来ます。

◎メッセージを付加して変更内容を保存する

git add等での変更内容は実際には一時的な記録(スナップショット)でしかありません。
この一時的な記録場所をindex(索引)又はstage(ステージ)といい、記録することを「ステージ(stage)する」とか「ステージング」といいます。
indexの内容(stageされた変更内容)を履歴に保存するのがcommitです。commit先はリポジトリといいます。

◎コミットIDとメッセージだけのシンプルなlogが見たい

◎コミットIDを指定して内容を比較する

◎変更内容(削除も含む)をステージ(index)から復活させたい

◎変更内容(削除も含む)をリポジトリ(履歴)の最新から復活させたい

※1 ステージ(index)の内容は破棄されます。

◎最新コミットの筆者をリセットする

◎作業フォルダの変更内容を維持したまま最新コミットを取り消す

◎commitとaddを同時に行う

「-a」のオプションを付加する事で、ステージ(index)にあるファイルの変更が更新(git add)されてさらにコミットされます。
※1 ステージ(index)に無い(git addされていない)ファイルはコミットされません。

◎必要のないディレクトリやファイルをgit addしてしまった

◎前回のコミットメッセージを編集したい

--amendオプションを付加すると新しい履歴は追加されずにHEADのコミット内容が上書きされます。
※1 ステージ(index)内容が変更されていた場合それもcommitに含まれてしまいます。

◎ステージ(index)の変更内容を取り消す

※1 「git reset」でも同じ事が可能

◎ファイル名を変更したい

変更した後はコミットしないとリポジトリには反映されません。

◎ステージ(index)からファイルを削除する

--cachedオプションを付加するとステージ(index)が対象になります。
当然ながらリボジトリに反映させる為にはcommitする必要があります。

◎最新のコミットから特定のコミットを削除して最新コミットとする

逆マージというやつです。本コマンドの場合は逆マージしてさらにコミットまで実行されます。 なので複数コミットの場合は使用出来ません。

◎複数コミットの逆マージ

この時点で のように表示されるので と修正して
:wq
コミットメッセージ編集画面が起動したらメッセージを編集して
:wq

◎rebaseを中止する

◎共有リポジトリを作成する

◎ブランチを作成する

◎ブランチを切り替える

◎リモートリポジトリのブランチを削除する

◎日本語ファイルの文字化けを解消する

◎GitコマンドをTabで補完できるようにする

本コマンドは一回実行すれば次回login時も有効になっています。

◎ステージ(index)の中身が見たい

◎サブモジュールを削除したい

◎リポジトリとステージされた内容(インデックス)のdiffを取りたい

◎ブランチAのコミット内容を現在のブランチへマージする

◎ブランチの作成と新しいブランチへの切り替えを同時に行う

◎ブランチAを削除する

◎設定(Config)の一覧が見たい

◎現在のブランチにマージ済みのブランチ一覧を表示する

◎現在のブランチに未だマージされていないブランチ一覧を表示する

◎HEADとは

HEAD はあなたが作業しているローカル(カレント)ブランチの最新のコミットを指し示します。

◎リビジョンを指定してブランチを作成する

◎gitkで全体のグラフを表示したい

◎マージを中断したい

このコマンドによりステージと作業領域の状態が最新のコミット内容で強制的に上書きされます。

◎git pull だけでカレントブランチのpullを実行したい

$git pull
を実行すると次のようなエラーが出る場合 トラッキング先を設定することで
$git pull
でpullすることが出来るようになります。 トラッキングを設定すると$git push、$git pull、だけで実行出来るようになります。

◎gitでプロジェクトをエクスポートする

フォルダ名/配下にエクスポートされてファイルパス.zipが作成される
※フォルダ名/のスラッシュを忘れないでね


このエントリーをはてなブックマークに追加