質問: 今のところ、これをローカルリポジトリのフォルダ`myLocalRepository`内にそのまま置いています: しかし、管理しやすいように、新しく`ver1`フォルダと`development`フォルダを作って、そこに`foo_ver1.js`と`foo.js`を移動しました。 ``` myLocalRepository//ローカルリポジトリのフォルダ(masterへpush) ├── .git | └──様々なgit関連のファイル群 ├── ver1 | └── foo_ver1.js └── development └── foo.js ``` 後から気が付いたのですが、ディレクトリ構成が変わってしまったので、このままpushしてしまうと今までの`foo_ver1.js`と`foo.js`のgitデータが破壊されてしまう気がしたので、再び上のディレクトリ構成に戻しました ここで質問なのですが、こういうときは`git branch`を使って`ver1`フォルダと`development`フォルダを作ればよいのでしょうか? ご回答よろしくお願いします。
回答: > > もし「ブランチ」というものが私の目的達成に適した道具であるなら、習得して使いこなせるようになりたいのですが、そういった用途に使われるものなのでしょうか? > > > はい。 どちらかというとブランチではなくタグを使うほうが目的に合っているとは思いますが、gitにおいてブランチとタグは仕組みがよく似ているものなのでブランチを理解した上であればタグの理解も容易です。 一応以下にもそれぞれ回答を書きましたが個別のケースで疑問を投げかけて何故そうなるか分からずに回答を受け入れるよりも、**gitの仕組みを一通り学習したほうが楽だと思います。** > > 私のGitHubのmasterブランチのページに、上記fig1のローカルリポジトリのフォルダmyLocalRepositoryの中身のファイルfoo_ver1.jsとfoo.js置いてあるのですが、これは「myLocalRepository内のfoo_ver1.jsとfoo.jsは、masterブランチと結びついている」という理解で間違いないでしょうか? > > > いいえ、そうではない場合もあります。 GitHubのmasterブランチのページに表示されているのは「リモートレポジトリ」の情報です。 自身のローカルディスク上に持っている「ローカルレポジトリ」の現在ブランチがmaster以外である可能性はおおいにあります。 > > 私のGitHubのページにはmasterのほかにもう一つmainというブランチがあって、そこにはRead meというテキストファイルがただ一つ置いてあるのですが、これはmainブランチはmasterブランチとは全く独立した別ディレクトリの履歴、ということでしょうか? > > また、「ブランチ」とは、「編集履歴のディレクトリ」のようなもの、という考えでよいでしょうか? > > > そのように理解できないこともないと思いますが、正しい仕組みを知ったほうがいいと思います。 > > GitHubにpushするとローカルリポジトリと同じファイルがアップロードされているということは、このpushというコマンドは、「gitの履歴の追記」と「ローカルリポジトリファイルのアップロード」という2つのことを同時に行うコマンドなのでしょうか? > > > うーん、まあそう言えなくもないでしょう。 pushはローカルレポジトリにあってリモートレポジトリに無いコミットをリモートに追加して、そのコミットを指すようリモートレポジトリのブランチを書き換えます。 > > foo_ver1.jsとfoo.jsのgitデータが破壊されてしまう気がしたので、再び上のディレクトリ構成に戻しました > > > 破壊されません。gitでは基本的に過去のデータが破壊されることはありませんし、名称変更や移動したファイルはファイル内容を元に自動的に追跡してくれます。