質問: githubにリポジトリを作成している状態で、developのブランチを作成しました。 `git clone`してから`sudo git checkout -b develop`でdevelopに変更できましたが、 `git clone` したものの内容がmasterの中身のままです。 他者がdevelopで開発をしていて、開発したものをコピーして確認したいのですが、方法がわからないです。mergeをまだしないでコピーだけしたです。 よろしくお願いいたします。
回答: `git checkout` は確かにブランチをチェックアウト(切り替える)する時に使うコマンドですが、 `-b` オプションを指定した場合は「**現在のコミットを指した新しいブランチを作り**、そのブランチをチェックアウトする」という意味になります。そのため master ブランチと同じものが見えてしまったのでしょう。 1. `git checkout master` で元のブランチに戻り、 2. `git branch -d develop` で誤って作成した develop ブランチを削除し、 3. `git checkout develop` で `origin/develop` を追跡する develop ブランチを作成 といった感じで Github と同じ develop ブランチをチェックアウトしなおせると思います。 また `sudo` がついていますが、 Git は作業ディレクトリ上のファイルだけでなく `.git` 以下の管理ファイルも作成・更新するため、それらのファイルの所有者が root になる可能性があります。こうなると sudo なしでの操作に問題が起きることがあるため、極力 sudo の利用を避けることをお勧めします。 が、 > > mergeをまだしないでコピーだけしたです。 > > > Git におけるマージというのは、あるブランチに別のブランチの内容を取り込んで合流させることです。つまり master から develop に現在のブランチをチェックアウトしただけでは、マージされることはありません。 ※`git pull` はリモートでの変更をローカルブランチに取り込むため、マージが発生します。 そのうえで、コピーだけしたいというのがよくわかりません。何を懸念して「merge」を避け、「コピー」にどのような結果を期待されているのでしょうか。 Github などに push していない変更はコマンド操作によって消失する可能性もあります。もし心配であればリポジトリを丸ごと別の場所にコピーしておくと安全かと思います。 参考 サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ