質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

git masterブランチの内容をローカルでそのまま置いておきたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 753

namnium1125

score 2010

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

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

もとのリポジトリをクローンして作業用とし、もとのリポジトリからリモートリポジトリとして参照するように設定すればよいでしょう。

  • リポジトリ(実行用リポジトリ)をクローンする(作業用リポジトリ)
  • 実行用リポジトリから作業用リポジトリを参照するように設定する
  • 開発作業:作業用リポジトリでプログラムを修正する
  • リリース:実行用リポジトリに開発用リポジトリの更新を取り込む

【例】

実行用リポジトリ

/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)実行用リポジトリ

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/31 01:09

    回答ありがとうございます!

    すでにbitbucketにリモートリポジトリがあるのですが、
    ということは、

    bitbucketのリモートリポジトリをクローンして、それを作業用とし、
    作業用リポジトリをbitbucketにpush

    bitbucketのリモートリポジトリを公開用リポジトリにpull

    という方法でもいいということでしょうか?

    引き続きよろしくお願いします。m(_ _)m

    キャンセル

  • 2017/08/31 01:15

    bitbucketにリポジトリがあるのであれば、おっしゃるとおり作業用からpushして公開用でpullするのがよいでしょう。ごく普通の使い方だと思います。

    キャンセル

  • 2017/08/31 01:31

    pullまでうまくいきました!

    回答ありがとうございました。m(_ _)m

    キャンセル

+1

基本的は使い方であれば、masterをチェックアウトして、developブランチ等を作って開発していけばいいと思います。develop環境で開発する分にはmasterブランチには一切影響を与えません。(マージすれば当然影響与えますが)

また複数人で開発する際にもプルして他の人の開発した分を自分のブランチに取り込んだ場合も影響は出ます。なので影響がでても構わないブランチにプルすればいいかもしれません。

簡単に言ってしまえば、gitの使い方は以上のようなものです。プルした際にコンフリクトしたときはstashするとかgit resetで戻るとかいろいろ触って失敗しながら学ぶのが一番早いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/31 00:09 編集

    回答ありがとうございます。
    追記しました。よろしくお願いします。m(_ _)m

    キャンセル

  • 2017/08/31 00:19

    せっかく追記してもらったのですが、何が困るのかよく分かりません。

    subブランチで開発中になにかリアルタイムに該当のpythonコードを走らせる処理があるってことでしょうか。

    なら、pythonで走らせたい処理はAWS上で走らせるとか、単純に該当ディレクトリを別のパスに移動させて開発すればいいと思いますがいかがでしょうか。

    キャンセル

  • 2017/08/31 00:57

    返信ありがとうございます。

    ローカルリポジトリにあるpythonコードに直接アクセスさせるのではなく、公開用に別な場所にコピーして、そこにアクセスさせるということでしょうか?

    それでは公開中のバージョンがわからなくなるので、
    そういった操作をgitで実現、または記録できないかと思い質問した次第です。

    またはローカルリポジトリにあるpythonコードをコピーして、そのコピーを開発用に使っていくとしても、それはgitに記録として残せないのでしょうか?(クローンとかマージとか言っていたのはこの操作についてです。)

    コミットメッセージに残すしかないのでしょうか?

    そのあたりが知りたいです。よろしくお願いします。m(_ _)m

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る