質問: gitについて質問です。 macをpython3のhttp.serverでサーバーに見立てて、同じwifi内の別なパソコンからアクセスし、mac上でwebアプリケーション(gitで追跡中)を動かしているのですが、 そちらに影響を与えないように新機能やバグフィックスをしたいです。 このときターミナル上で、gitではどのような操作をすればいいのでしょうか? 参考書にはmasterブランチから別なブランチを作りそちらにチェックアウトすれば、 masterに影響を与えずに進められる、とあったのですが、 それをそのままローカルリポジトリ(まさに運用中)でやってしまうと、masterブランチに再びチェックアウトすれば確かにもとには戻りますが、新しいブランチにいるうちは結局同時に内容が変わってしまいますよね。。(^ ^; 別なところにクローンして、それを後からマージすればいいのでしょうか? それとも他に最適な方法があるのでしょうか? gitは始めたばかりで、コマンド等は見よう見真似でやっている状態です。 回答よろしくお願いします。m(_ _)m 追記 -- うまく伝わっていなかったようなので追記させて下さい。 print.pyが入っているhogeディレクトリを追跡中として、 masterブランチに ``` #print.py print("master") ``` subブランチに ``` #print.py print("sub") ``` があるとします。 始めmasterにチェックアウトしているとします。 ここで以下のようになりますよね? ``` $ python3 print.py master $ git checkout sub Switched to branch 'sub' $ python3 print.py sub ``` ということは開発用にsubブランチにチェックアウトして、 その間にprint.pyにアクセスすると内容が変わってしまうということですよね? 開発中にprint("master")が書かれたprint.pyにアクセスできないので、それはまずいんです。 それを防ぐにはどうすればいいかを教えていただきたかったです。 別なファイルにクローンして、マージすればいいんでしょうか? 引き続き回答よろしくお願いします。m(_ _)m
回答: もとのリポジトリをクローンして作業用とし、もとのリポジトリからリモートリポジトリとして参照するように設定すればよいでしょう。 * リポジトリ(実行用リポジトリ)をクローンする(作業用リポジトリ) * 実行用リポジトリから作業用リポジトリを参照するように設定する * 開発作業:作業用リポジトリでプログラムを修正する * リリース:実行用リポジトリに開発用リポジトリの更新を取り込む **【例】** 実行用リポジトリ ``` /Users/public/myservice ``` クローンして作業用リポジトリを作成 ``` $ git clone file:///Users/public/myservice /Users/public/myservice_work ``` 実行用リポジトリのリモートリポジトリとして作業用リポジトリを登録 ``` $ cd /Users/public/myservice $ git remote add origin file:///Users/public/myservice_work ``` 作業用リポジトリでファイルを修正 ``` $ cd /Users/public/myservice_work # ファイルを編集 $ git add . $ git commit -m "コメント" ``` 実行用リポジトリに変更を反映 ``` $ cd /Users/public/myservice $ git pull origin master ``` **【補足】** 上の例は以下のパターンとなりますが、 `作業用リポジトリ`→`(git pull)`→`実行用リポジトリ` 普通は以下のように共有リポジトリを用意することが多いと思います。 `作業用リポジトリ`→`(git push)`→`共有リポジトリ`→`(git pull)`→`実行用リポジトリ`