ローカルのみのgit環境を作成、およびEclipseと連携

Git Bash for Windowsで検証

  1. 任意の場所にフォルダを作成し、その場所へcdコマンドで移動、そして「git init」コマンドを実行する。
    	$ mkdir private
    	$ cd private
    	$ git init
    			
  2. privateフォルダ内にREADME.mdファイルを作成する。
  3. 「add」および「commit」コマンドを実行して、README.mdをコミットする。
    	$ git add Readme.md
    	$ git commit -m '初回コミット'
    			
  4. Eclipseを起動。File > New > PHP Projectと操作し、既存プロジェクト指定とプロジェクト名指定を行うだけ。
  5. 以上で、Eclipseからコミットができるようになる。リモートリポジトリの設定はしていないのでプッシュはもちろんできない。
参考:さくらのレンタルサーバーにGit環境を構築してみる


コマンドでコミット→プッシュ

  1. cdコマンドでプロジェクトのトップディレクトリに移動する。
  2. 差分ファイルを追加
    $ git add -A
  3. コミット
    $ git commit m '任意のメッセージ'
  4. プッシュ
    $git push リポジトリ名 ブランチ名
    $ git push origin master

プロジェクトに紐づいているリモートリポジトリの情報を確認する。

先にcdコマンドでプロジェクトのホームディレクトリへ移動しておく。その後、下記コマンドを実行。
$ git remote -v
	$ git remote -v
	origin  git@github.com:amaraimusi/cake_demo.git (fetch)
	origin  git@github.com:amaraimusi/cake_demo.git (push)
	

リモートリポジトリからプル(履歴が違うと怒られる場合)

$git pull --allow-unrelated-histories リポジトリ名 ブランチ名
$git pull --allow-unrelated-histories origin master

メールアドレスが登録されていない | fatal: unable to auto-detect email address

$git config --global user.email amaraimusi@example.com
参考


コンフリクト(競合)の修正

※暫定版
	README.mdファイルでコンフリクト(競合)が起きたとする。
	README.mdファイルファイルを開き、手作業で修正する。
	
	修正が終わったら普通に保存。
	
	差分ファイル追加を行う。
	$ add README.md
	「$ git add -A」でも良い?
	
	コミット
	$ git commit m任意のメッセージ
	
	プッシュ
	$git push リポジトリ名 ブランチ名
	$ git push origin master
	

GitHubからコマンドでCakePHP2をインストールする

cdコマンドでcake_phpを配置するディレクトリへ移動し、下記コマンドを実行する。
git clone -b 2.x git://github.com/cakephp/cakephp.git

強制的にリモートブランチの最新状態にローカル環境を戻す

間違ってコミットしてまったり、競合が発生していろいろごちゃごちゃ状態になったしまうことがある。
とりあえずソースコードをリモートの最新状態に戻すには下記のコマンドを用いる。

リモートブランチ「origin/master」の最新状態に、ローカル環境をリセットする。

	$ git fetch origin master
	$ git reset --hard origin/master
	

履歴からファイルを削除する

下記の方法で履歴からファイルを削除できることのことだが、要検証が必要である。 どうにも不安がぬぐえない。 Githubでpublicなリポジトリにしているなら、リポジトリを作り直したほうがいいのかもしれない。 また、強制プッシュがあるのでチーム開発では勧められない。 GitHubのサポートに連絡してキャッシュを削除してもらわないといけないという。

database.sqlを履歴から削除する例

コマンドを実行するまえにEclipseを閉じること。Unlink~なんとかのエラーが発生する。 ファイル名はパスまで指定する必要があるとのこと。
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch backup/database.sql" --prune-empty -- --all
git reflog expire --expire=now --all
git gc --aggressive --prune=now
git push -f
「git reflog」は履歴から削除。
「git gc」はガベージコレクション。いわゆるゴミ掃除。
「git push -f」は強制push。チーム開発ではつかうべきではない。

Unlinkなんとか~というエラーが出た場合、他のアプリがファイルを使用中なので削除できないという意味。 Eclipseを閉じると上手くいく。
Unlink of file 'xxxx.html' failed. Should I try again? (y/n)

作業中に誤ったブランチで作業を行ったことに気づいた場合の対応 | スタッシュ | git stash

# ステージを取り消す(git add) git reset ファイル名 # すべてのステージを取り消す git reset # スタッシュする git stash # ブランチを切り替える git checkout orign/neko # 先ほど避けたスタッシュを今いるブランチに適用する $ git stash apply