2017-01-27 4 views
1

異なるファイルシステムを持つ複数のブランチを正しく整理するにはどうすればよいですか?ここで Git - 異なるファイルシステムを持つ複数のブランチ

状況である - 私は2つの支店を持っている


    年前に作られたプロジェクトファイルと
  • 現在のマスター
  • 新しいプロジェクトファイルを開発し現在の(完全に異なるフレームワーク)それはまもなく開発されようとしています。


brachには、例えば、.gitignoreファイルによって無視されるフォルダ "storage"があるという問題があります。他のブランチにはこのフォルダがありません(その理由は.gitignoreファイルにもありません)。開発からマスターbrachへのチェックアウト時に、この「storage」フォルダが他のブランチに突然表示されてしまいます。

ファイル/フォルダをサーバーに送信しないで、同時にファイル/フォルダを各ブランチに固定する必要がある各プロジェクトを、各チェックアウトのブランチを通過することなくどのように指定するかを指定します。

私は、このフォルダをプロジェクトの.gitignoreファイルに追加することでこの問題を解決することができました。このフォルダは存在してはいけません(コミットすべき変更されていないファイルはありません)それは最高の解決策ではありません。なぜ、私はそこにいてはならないものを除外するのでしょうか?

PHPStorm IDEを使用していると、さらに複雑になります。 PHPStormは各プロジェクト(この場合は、各ブランチ)の ".idea"フォルダを作成します。ここには特定のプロジェクトのすべての設定ファイルと履歴ファイルがあります。明らかに、私はリモートのリポジトリにこのフォルダを送りたくないのです(それぞれの開発者が各プロジェクトの.ideaフォルダを持っているので).gitignoreファイルで除外しています。それ自身の ".idea"フォルダ)。他のブランチにチェックアウトすると、このフォルダはそのブランチに移動します。このブランチは、この.ideaフォルダが他のブランチの.ideaフォルダを破棄するために発生しません。すべての設定が乱雑です。

なぜ2つの異なるプロジェクトファイルシステムが2つのプロジェクトとして2つのプロジェクトに分かれていないのですか? - それは同じプロジェクトなので。同じビジュアルデザイン、機能を提供し、多くの追加機能を追加する完全に新しいバージョン。これを他のプロジェクトと呼ぶのは意味がありません。それは異なるバージョンですが、同じプロジェクトです。

答えて

2

.gitignoreを使ってファイルやフォルダを無視すると、それらはGitのfullstopによって無視されます。彼らは追跡されておらず、混乱していません。単に無視されます。それらは追加、変更、削除されませんが、完全に無視されます。それらは無視されるので、どのブランチにも割り当てられません。

あなたのケースでは、異なるブランチに対して複数のワークツリーを持つことが最善の策だと思います。 worktreeは、あなたが作業するために実際のファイルがチェックアウトされるディレクトリです。 git worktreeを使用すると、複数の作業ツリーを1つのリポジトリに追加することができます。異なる作業ディレクトリに異なるブランチをチェックアウトすることができます。

、あなたがブランチbため.ideaを無視してきた枝bのためのブランチaとフォルダbため.ideaを無視してきた枝a、用フォルダaを持つことができますこの方法。

実際には、.ideaのほとんどのファイル(たとえば、workspace.xmlではなく、他のすべてのファイルと思われます)は開発者固有のものではなく、プロジェクト固有のものです。したがって、workspace.xml以外のものはすべてバージョンコントロールにチェックインできるようになっているので、別のブランチに切り替えるとすぐに利用できるこのブランチのIDEメタデータは/.idea/workspace.xml.gitignoreに追加されます。ファイルには、非共有実行構成、開いたファイル、ツールウィンドウのレイアウト、ウィンドウの位置など、開発者の特別なものが含まれています。これはあなたが考慮すべきもう一つの解決策かもしれません。

+0

正しく処理する方法を聞いています。なんらかの理由で、私はこの問題に関する答えを探している間、作業台について何も気付かなかった。私はそれらを使用しようとし、それが私の問題を解決するなら、私はこれを正解として受け入れます。 –

関連する問題