1

gitが次のことを行うかどうか興味があります。

コミットされたプロジェクトがあり、Mt.Rushmore の JPG a、b、c が含まれています。

ここで、プロジェクト (2) の新しいブランチを作成し、ファイル a、b、c を同じ名前であるがイエローストーン公園のものである新しいファイルに置き換えて、それをコミットします。

私の意図は、両方のプロジェクトを互いに独立して進化させることですが、本質的には同じですが (それぞれに関連付けられているクリエイティブな JPG ファイル以外は変更されることはほとんどありません)。

ブランチを切り替えると、ファイルが前後に切り替わると想定するのは正しいですか? もしそうなら、ブランチ間を移動するときに関連ファイルをリポジトリから削除/ダウンロードするためのgit固有のコマンドは何ですか?

これがこれを処理する正しい方法ではない場合、それは何ですか?

具体的には、Javaコードベースが変更されることはほとんどないAndroidプロジェクトがありますが、レイアウトはさまざまな基準に応じて異なるアートになります.2つのプロジェクトに分割したくないのは、パッケージ名が同じであるためです。それはすべて非常に面倒になります。

4

2 に答える 2

2

分岐はこれを管理する良い方法かもしれません。

Git は、現在のブランチに基づいてイメージを変更します。それらが同じ名前であるという条件で。

あなたがすることは次のとおりです。

git checkout <branch-name>

基になるパッケージが同じで、一部だけが異なる場合。サブモジュールを使用するとうまくいくと思います。

http://git-scm.com/book/en/Git-Tools-Submodules

このようにして、基になるパッケージに変更を加えると、その共通の変更を両方のプロジェクトで簡単に共有できます。行っているレイアウトの変更を解析する代わりに。

于 2013-01-29T22:52:56.197 に答える
1

必要なワークフローは次のようになります。

$ git checkout -b rushmore
$ git add a.jpg b.jpg c.jpg
$ git commit -m "Mt.Rushmore"

$ git checkout -b yellowstone"
$ git add a.jpg b.jpg c.jpg  //modified files
$ git commit -m "Yellowstone Park"

これrushmoreで、Mt.Rushmore の写真を含むyellowstoneブランチと、これらをイエローストーン公園の写真で上書きするブランチが作成されました。checkout -b rushmoreいつでも前後に切り替えることができます。

このソリューションには 1 つの欠点があります。ブランチに他の変更を加えた場合、次のように言うだけrushmoreでそれらをブランチにマージできます。yellowstone

$ git checkout yellowstone
$ git merge rushmore

ただし、イエローストーンの写真がラシュモア山を上書きするため、リバース オペレーションは失敗します。したがって、これらの写真を外部化するか、両方のセットを別々のディレクトリにコミットする方が良い方法だと思います。ブランチを 1 つだけ用意し、実行時に (おそらく何らかの構成オプションを使用して) どの写真セットを使用するかを決定します。

于 2013-01-29T22:59:02.097 に答える