開発スタート
branch作成
- masterから開発用のbranchを作成するのであれば、masterにチェックアウトします。0
git checkout master
branch作成時の困りもの
- 自分がいるbranchがどこだかわからなくなります。
$ git branch
201506hoge
201507hoge
*201508renewalSites
master
201508renewalSitesにいることがわかります。
- 同じrepositoryで複数開発をしている場合、masterにチェックアウト出来ない場合があります。
$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
hoge.php
hogehoge.php
Please, commit your changes or stash them before you can switch branches.
error: The following untracked working tree files would be overwritten by checkout:
hoge.php
Please move or remove them before you can switch branches.
Aborting
- 指示に従って、commitするかstashで変更を隠してしまいます。stashの場合は
$ git stash save hogeStashName
Saved working directory and index state On 201508renewalSites: hogeStashName
HEAD is now at xxxxxxx ID defined
その後、問題なくmasterにチェックアウト出来るようになります。
いろいろなbranch作成
- -bのオプションを付けることで、branchを新規作成しチェックアウトすることになります。
git checkout -b localNewBranch
- 既にリモートに開発用branchが作られているのであればチェックアウト元を指定します。
it checkout -b localNewBranch origin/remoteBranch
- remoteBranchが無いよ、と言われるときがあります。
$ git checkout -b fuga origin/remoteBranch
fatal: git checkout: updating paths is incompatible with switching branches.
Did you intend to checkout 'origin/remoteBranch' which can not be resolved as commit?
- ローカルにremoteBranchの情報が無いためとなります。-aオプションを付けてあげる事によって、ローカルとリモートのbranchリストが表示されます。
$ git branch -a
201506hoge
201507hoge
*201508renewalSites
master
remotes/origin/201506hoge
remotes/origin/201505DBReset
remotes/origin/201507hoge
remotes/origin/201508renewalSites
remotes/origin/master
- そのような場合はfetchを実施します。
$ git fetch
remote: Counting objects: xx, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From /path/to/repository
*[new branch] remoteBranch -> origin/remoteBranch
- remoteBranchの情報が表示されるようになりました。これでリモートにある開発用branchからbranchを作成することが出来ます。
$ git branch -a
201506hoge
201507hoge
*201508renewalSites
master
remotes/origin/201506hoge
remotes/origin/201505DBReset
remotes/origin/201507hoge
remotes/origin/201508renewalSites
remotes/origin/master
remotes/origin/remoteBranch
ファイルを修正したり作成したら
gitにトラッキングしてもらいます
- gitにファイルを監視してもらうために、addします。
$ git add hogehoge.php
いろいろなgit add
- addするファイルが多い場合、*(アスタリスク)が使えます。 phpファイルを追加しています。
$ git add *.php
- ディレクトリごと追加も出来ます。
$ git add /home/hoge/website/hogehoge/
開発が一区切り着いたら
commit します。
- commtiします。
git commit --author="hoge fuga <niwa@hogehoge.me>"
- コマンド実行後、commitMessage編集のテキストファイルが開かれるので、適宜コメントを残します。
開発が終了したら
push します。
- pushします。
git push origin HEAD
とにかくリモートと一緒にしたいとき…。
resetします。
- リモートのmasterと一緒にしたいけれど、いろいろ面倒なのでえいやっとリモートと一緒にしたいときは
$ git reset --hard origin/master
--hardのオプションを付けることでcommitしていない作業中のファイルはすべてmasterと同じになります。あぁ、すっきり。
- リモートのbranchと一緒にしたいけれど、いろいろ面倒なのでえいやっとリモートと一緒にしたいときは、resetの基準をmasterでは無く任意のbranchにします。あぁ、すっきり。
git reset --hard origin/remoteBranch
最後に
まだgitを使い始めて2ヶ月なので、説明不足な点は多々あると思います。下記のような環境ですので、いろいろ困ったことが多いです。少しずつ情報を書いていこうと思っています。
- github
- テスト環境
- ec2上のCentOS 6
- ローカル環境
- windows7でのvagrantとvirtual boxによる仮想環境
- cygwin
- git クライアント tortoise