gitを使用した個人的開発の流れ
- remoteにpushしない
- remoteでbranch切ってそこにpush
- git pullではなくfetchをしてmergeをする
作業を開始
$ git branch -a #今いるブランチを確認 (-aをつけることでリモートブランチも見れる)
$ git branch ブランチ名 #ブランチ作成
$ git checkout -b ブランチ名 #ブランチ移動 (-bをつける事で新規にブランチを作成し移動)
上記のように新しくブランチを切って初回のpushでは、以下のように聞かれます。
$ git push
fatal: The current branch ブランチ名 has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin ブランチ名
最初はgit push origin master
というコマンドを打ちますが、これはgit push [remoteのリポジトリ] [remoteのブランチ]
のようにoriginのmasterブランチにコミットの内容を反映させるコマンドです。 origin master
を省略したgit push
のようにリモートリポジトリのブランチ名を省略すると、ローカルリポジトリのブランチと同じ名前のブランチへpushされます。その時にupstream branchを見ています。 upstream branchがないのでgit push --set-upstream origin ブランチ
でセットする必要があります。fetchやpullをした場合は自動で生成されます。 これを解決するには、以下を実行してください ```
$ git config --global push.default current
ちなみに、git push --set-upstream origin ブランチ名を実行して、 ```
$ git branch -a
をすると、
$ git branch -a
* ブランチ名
remotes/origin/ブランチ名 <- これがtracking branch
master
remotes/origin/master
こんな感じになり、tracking branchが作成されています。 こちらのtracking branchはfetchやpullをすると自動的に更新されます。 Git で「追跡ブランチ」って言うのやめましょう次に、リモートのmasterブランチが更新されている可能性が高いので、作業再開時に必ずリモートリポジトリから最新の取り込みを行います。いかを実行してください。
$ git fetch origin
$ git merge origin/master
git pull は現在チェックアウトしているブランチに merge するので、チェックアウトをし忘れて関係ない作業ブランチに pull してしまう可能性がある!! ## ファイルを編集したら
$ git status #ファイルの編集状態確認
$ git add . #コミットしたいファイル追加(.ではなくディレクトリを指定する事で個別に追加する事ができる)
間違ってaddしてしまったらresetしましょう
$ git reset
# 特定のファイルのaddを取り消す
$ git reset /path/to/xxx.yyy
ステージングにあげたファイルを
# 例git add app #appディレクトリのファイル変更分のみコミット対象にする
$ git commit -m コミットコメント #addしたファイルをコミット
特定のコミットまで戻したい場合は、
$ git log //戻す対象のハッシュ値を調べる
commit ************************
$ git reset --hard ハッシュ値
commitに関する記事を以下に書いておく。
コミットログを確認
ログを確認する場合は
$ git log オプション
で確認できる。 オプションは以下になっている。
option | 説明 |
---|---|
--oneline | 1行のみログ表示 |
--decorate | branch名、tag名などの別名を表示 |
--graph | revision graphを表示 |
--branches | 他のbranchのlogも表示 |
--tags | tagを表示 |
--remotes | remote branchなどを表示 |
基本的には、
$ git log --graph
でログを見ればいいと思います。 ### git logの例
特定のブランチのログを見たければ、
$ git log master..ブランチ
のように..で繋いでログを観れる # おまけ