予め予防線を張っておくと、
僕はgitマスターには程遠いので
完全に間違ったことを
言ってる可能性があります
$ git branch
master
develop
features/sugoi-kino
$ git branch -d master
$ git branch -d develop
$ git branch
features/sugoi-kino
$ git checkout features/sugoi-kino
$ git fetch origin
$ git rebase develop
$ git checkout features/sugoi-kino
$ git fetch origin
$ git rebase develop
ではどうするのが正しいか
$ git checkout develop
$ git pull origin develop # このコマンドでorigin/developとdevelopを同期する
$ git checkout features/sugoi-kino
$ git rebase develop
$ git fetch origin
$ git rebase origin/develop
こんな感じ
これができるとローカルリポジトリにあるブランチは
変更を直接加えるブランチのみになる
しかしgithubを使ってるためmaster,developへの変更は
現状pull requestがすべて
↓
ローカルリポジトリのmaster, developブランチ(゚⊿゚)イラネ
特にほかのVCSからgitへ移ってきた人は
ローカルのブランチとリモートのブランチが
混同されがち(あるいは自動で同期されると勘違いしがち)
なので、
ローカルのmaster,developブランチは削除して
origin/* 構文を覚えましょう!
gitに慣れてる人でもローカルのブランチが
すべて進行中のブランチのみになるという嬉しい点があります
$ git checkout origin/master
git fetchコマンドは一見originリポジトリのdevelopと
ローカルリポジトリのdevelopを同期してくれそうに見えるが、
実際にはoriginリポジトリのdevelopとローカルリポジトリのorigin/developを同期する
逆に言うとgit fetchしない限りローカルリポジトリのorigin/developは同期されない
(origin/developを指定するたびoriginを見に行って
最新状態を取得したりしない)
よって
$ git fetch origin
$ git rebase origin/develop
のfetchを忘れて
$ git rebase origin/develop
だけ実行してしまうと最後にfetchした時のorigin/developへrebaseしてしまう