2017-01-25 3 views
0

最近、私のPythonスクリプト(git、magit、Pythonをemacsで使って)でバージョン管理用のgitを使い始めました。適切に分岐する。最後のバージョンを上書きせずに作業スクリプト上のgitブランチを変更する

私はtest.pyというスクリプトを作成し、これは私のgitリポジトリのmasterブランチにコミットされているとします。このスクリプトはうまくいくかもしれませんが、かなり変更する必要があります(master.pyのバージョン2.0など)。さて、test.pyはcronジョブで絶えず使われているという点で重要なので、私はtest.py 2.0で作業している間も私は引き続きオリジナルを呼び出すことができます。

私がすべきことは、(新しいブランチ "version2"と呼ぶ)マスターのブランチであり、アップデートを続けることです。しかし、私が気付いたことは、version2ブランチの下でtest.pyを保存すると、ディスク上のtest.pyの保存されたバージョンを上書きすることです(つまり、私のcronジョブはtest.pyの未完了バージョン2を呼び出します)。理にかなっている?

質問:私のcronジョブで呼び出されているtest.pyスクリプトを上書きしなくても、version2ブランチの下でtest.pyを処理し続けることはできますか?私はこの状況をどのように処理するのか分かりません。

+0

を:あなたは、ファイルの新しいバージョンでの変更内容に満足していると、今あなたがマスターにそのブランチをマージすることができ、オリジナルを上書きする準備が整いましたら、

'cron'によって呼び出されるディレクトリです。作業ツリーで何かを直接実行すべきではありません。 – rom1v

答えて

1

あなたが開発したファイルを自動的に呼び出すべきではないでしょう。あなたの問題を解決する1つの方法は、version2ブランチ用に別のワーク・ツリーを用意することです。masterワーク・ツリーはあなたのcronジョブによって呼び出されたままです。

+0

これは意味があります。私はブランチングの機能が本当に好きですし、worktree経由で新しいディレクトリを作成するという考え方が嫌いです。つまり、新しいワーク・ツリーは私が必要とするものをするようです。ここで分岐がうまくいかないと言っていますか? – tnknepp

+0

いいえ、あなたが作業しているブランチを作成し、新しく追加されたワークツリーでこれをチェックしてください。同じリポジトリの2つの異なる作業環境で同じブランチをチェックアウトすることはできません。したがって、リポジトリのメインワークツリーではなく、2番目にリンクされているブランチで作業します。 – Vampire

+0

私はいくつかの質問があります:1.新しいワークツリーを作成すると、自動的に新しいブランチが作成されます。または、最初に新しいブランチを作成してから、そのワーク・ツリーを作成する必要がありますか? 2.新しいワークツリーをオリジナルのマスターブランチにマージすることはできますか? – tnknepp

0

ブランチを解除する必要があるという前提が正しいとします。これは、ファイルの2つのバージョンを持つことができ、必要に応じていつでも使用できることを意味します。 test.pyに変更を加えたら、git checkout -b [new branch name]を使用して新しいブランチを作成できます。元のバージョンに戻す必要がある場合は、もう一度マスターをチェックアウトするだけです(git checkout master)。ちょうど別のあなたの「作業」バージョンを展開

git checkout master 
git merge [new branch] 
git branch -D [new branch] --this deletes the 'version 2' branch assuming you no longer need it. 
+0

ありがとうございます。しかし、分岐した後でも、test.pyは2つのブランチをマージする前でもディスク上で変更を続けますか?私はここで正しく分岐していることを確認したい。 – tnknepp

+0

はい、そうです。他のブランチにいる間は、あなたのcronジョブが間違ったファイルを呼び出すので、これは役に立ちません。 @mohammedkhan、 '-D'の代わりに' -d'を使う方が良いでしょう。 '-d'は、マージされていないブランチの削除を拒否します。 '-D'は常にブランチを削除するので、reflogが期限切れになって自動的に' git gc'が実行されたときにそのブランチ上にあったコミットが緩くなります。あなたの答えは述べられた質問のために助けになるのではないことに加えて。 – Vampire

+0

あなたがリリース戦略を持っていないとうまくいかないと思いますが、私は元の質問からそれを得ていないと思います。 – mohammedkhan

関連する問題