1

このタイトルはかなりあいまいだと思います。gitブランチ間を移動するときに特定のファイルで異なるバージョンのファイルを使用したいが、全体的にリポジトリから.gitignoredにしたいと言う方法があるのではないかと思います。

これが私のシナリオです。gitで制御するFlashBuilderプロジェクト(Flexアプリ用)があります。Flash BuilderプロジェクトのFlexアプリは、、、およびの3つのファイルを作成し .actionScriptPropertiesます。これらのファイルには多くのローカルファイルシステム参照(ソースフォルダー、出力フォルダーなど)が含まれているため、当然、リポジトリから.gitignoreします。.flexProperties.project

今日、私は自分のプロジェクトで新しいライブラリを使用したかったので、という別のgitブランチを作成しlib、古いバージョンのライブラリを削除して、新しいバージョンを追加しました。残念ながら、このFlexライブラリ情報は、これら3つのドットファイルのいずれかに保存されます(どちらがオフハンドかはわかりません)。そのため、以前に最初のブランチ()に戻らなければならなかったとき、新しいライブラリにリンクされていたmasterためにコンパイルエラーが発生していました(これにより、最初に作成した理由が基本的に否定されました)。masterlib

だから私はこれらのファイルを.gitignoreし続ける方法があるかどうか疑問に思っています(他の開発者はそれらを取得しません)が、私ができるようにある種のローカル「ブランチバージョン」を使用したいことをgitに伝えますブランチごとに異なるバージョンのファイルをローカルで使用します。

4

1 に答える 1

1

TL;DR

ファイルが無視されるか、そうでないかのどちらかです。ただし、ファイルが無視された場合でも、ファイルをブランチにコミットできます。間違ったブランチで再度コミットしないようにする必要があります。

オプション

  1. git の下でリビジョンを維持したいが、別のプロジェクトである場合は、サブモジュールまたはサブツリーのマージを使用できる場合があります。
  2. RCS を使用して、Git によって無視されるファイルをバージョン管理します。git-clean には注意してください。*,vファイルを吹き飛ばすと、RCS のリビジョン履歴が失われます。
  3. カスタムファイルだけを含むブランチを保持し、無視されたファイルを定期的に作業ツリーにマージします

オプション 3、詳細

master ブランチのファイルは無視してください。

git checkout master
cat << EOF >> .gitignore
.actionScriptProperties
.flexProperties
.project
EOF
git add .gitignore
git commit .gitignore

構成ファイルを保持する空のブランチを作成します。

git symbolic-ref HEAD refs/heads/flexconfig
rm .git/index 
git clean -fdx
touch .actionScriptProperties .flexProperties .project
git add .
git commit

無視したファイルを master ブランチにマージしますが、無視したままにします。

git checkout master
git merge --no-ff flexconfig

この時点で実行するgit statusと、クリーンな作業ツリーが表示されますが、実際には作業ツリーに Flex ドットファイルがあります。git add ..gitignore 設定を上書きするので、使用しないでください。

于 2012-06-12T22:27:53.460 に答える