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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

1426閲覧

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

namnium1125

総合スコア2043

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2017/08/30 14:04

編集2017/08/30 15:08

gitについて質問です。

macをpython3のhttp.serverでサーバーに見立てて、同じwifi内の別なパソコンからアクセスし、mac上でwebアプリケーション(gitで追跡中)を動かしているのですが、

そちらに影響を与えないように新機能やバグフィックスをしたいです。

このときターミナル上で、gitではどのような操作をすればいいのでしょうか?

参考書にはmasterブランチから別なブランチを作りそちらにチェックアウトすれば、
masterに影響を与えずに進められる、とあったのですが、

それをそのままローカルリポジトリ(まさに運用中)でやってしまうと、masterブランチに再びチェックアウトすれば確かにもとには戻りますが、新しいブランチにいるうちは結局同時に内容が変わってしまいますよね。。(^ ^;

別なところにクローンして、それを後からマージすればいいのでしょうか?

それとも他に最適な方法があるのでしょうか?

gitは始めたばかりで、コマンド等は見よう見真似でやっている状態です。

回答よろしくお願いします。m(_ _)m

##追記

うまく伝わっていなかったようなので追記させて下さい。

print.pyが入っているhogeディレクトリを追跡中として、

masterブランチに

python3

1#print.py 2 3print("master")

subブランチに

python3

1#print.py 2 3print("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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

【例】

実行用リポジトリ

/Users/public/myservice

クローンして作業用リポジトリを作成

sh

1$ git clone file:///Users/public/myservice /Users/public/myservice_work

実行用リポジトリのリモートリポジトリとして作業用リポジトリを登録

sh

1$ cd /Users/public/myservice 2$ git remote add origin file:///Users/public/myservice_work

作業用リポジトリでファイルを修正

sh

1$ cd /Users/public/myservice_work 2 3# ファイルを編集 4 5$ git add . 6$ git commit -m "コメント"

実行用リポジトリに変更を反映

sh

1$ cd /Users/public/myservice 2$ git pull origin master

【補足】

上の例は以下のパターンとなりますが、

作業用リポジトリ(git pull)実行用リポジトリ

普通は以下のように共有リポジトリを用意することが多いと思います。

作業用リポジトリ(git push)共有リポジトリ(git pull)実行用リポジトリ

投稿2017/08/30 15:58

編集2017/08/30 16:10
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namnium1125

2017/08/30 16:09

回答ありがとうございます! すでにbitbucketにリモートリポジトリがあるのですが、 ということは、 bitbucketのリモートリポジトリをクローンして、それを作業用とし、 作業用リポジトリをbitbucketにpush ↓ bitbucketのリモートリポジトリを公開用リポジトリにpull という方法でもいいということでしょうか? 引き続きよろしくお願いします。m(_ _)m
tkmtmkt

2017/08/30 16:15

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

2017/08/30 16:31

pullまでうまくいきました! 回答ありがとうございました。m(_ _)m
guest

0

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

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

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

投稿2017/08/30 14:15

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namnium1125

2017/08/30 15:10 編集

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

2017/08/30 15:19

せっかく追記してもらったのですが、何が困るのかよく分かりません。 subブランチで開発中になにかリアルタイムに該当のpythonコードを走らせる処理があるってことでしょうか。 なら、pythonで走らせたい処理はAWS上で走らせるとか、単純に該当ディレクトリを別のパスに移動させて開発すればいいと思いますがいかがでしょうか。
namnium1125

2017/08/30 15:57

返信ありがとうございます。 ローカルリポジトリにあるpythonコードに直接アクセスさせるのではなく、公開用に別な場所にコピーして、そこにアクセスさせるということでしょうか? それでは公開中のバージョンがわからなくなるので、 そういった操作をgitで実現、または記録できないかと思い質問した次第です。 またはローカルリポジトリにあるpythonコードをコピーして、そのコピーを開発用に使っていくとしても、それはgitに記録として残せないのでしょうか?(クローンとかマージとか言っていたのはこの操作についてです。) コミットメッセージに残すしかないのでしょうか? そのあたりが知りたいです。よろしくお願いします。m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問