2013-01-18 1 views
6

私はGITを使用していますが、同時に2つのタスクを処理しています。タスク1とタスク2。今私はサーバーTask1にプッシュしたいと思います。タスク1(T1)のすべての関連ファイルをステージング領域にコミットします。GIT - ステージングエリアのコンパイルとテスト

マイステージング領域をサーバーにプッシュする準備ができていますが、これを行う前に、ステージング領域がコンパイルされてテストに合格しているかどうかを確認することは安全です。

ステージングエリアonly changes in order to compile itで作業ディレクトリを取得し、自動テストを実行するにはどうすればよいですか?

注意作業ディレクトリは、T1とT2に関連する変更があるため、作業ディレクトリのテストのみを実行します。

答えて

4

gitブランチを使用する必要があるように私に聞こえます。それぞれのタスクは別のブランチ上で開発され、別のブランチの前にプッシュして最初の完了したブランチ(タスク)から2番目のブランチにマージアップすることができます。

詳細はhereを参照してください。

+0

はい私は知っています。しかし、私はちょうどこのケースで何が起こるかを知りたいと思っています。 – user1990009

+0

はい、ブランチを使用しているケースが正解ですが、必ずしもそうではありません。たとえば、一部のデバッグコードをステージングしてコミットしないようにし、ステージングされたコードが正常にビルドされ実行されているかどうかをテストすることができます。 – musiphil

0

私は同様のプロジェクトを持っています。私はこれを達成するために枝を使用します。私はsrcブランチを作成し、そこでコードを作成しました。一度すべてが大丈夫だと思うと、その点を分岐してbinブランチに分岐します。コンパイルが動作すればコミットします。次にsrcブランチをmasterにマージします。この方法では、既知の作業コードのみを使用してmasterブランチをクリーンに保ちます。 devコードとコンパイルされたファイルを独自の自律的なブランチ(私は決してプッシュしない)に保持します。

6

git stash saveあなたの関連していないすべての変更を隠しに保存し、テストを実行してから、関連しない変更をgit stash popに復元することができます。 (それが私の場合は、最初にman git-stashを読んで、すべてのステップが正しい順序で確実に行われるようにします)。

+2

正確に言えば、この場合に必要なのは、 'git stash save --keep-index'です。これは、ローカルの変更のみを隠している間は、ステージコードをそのままにします。 – musiphil

+0

しかし、あなたが未追跡のファイル、つまりGitにまだ追加されていないファイルがある場合は注意してください。これらは隠されていないので、コンパイルのために新しいファイルが必要だが、まだリビジョンコントロールに追加されていないかどうかはわかりません。 '--include-untracked'スイッチを使ってそれらを隠します:' git stash save -k -u'。 – Florian