2

私のGitリポジトリには、メインの共有リポジトリとは異なる構成ファイルがあり(追跡し続ける必要があります)、変更が他の開発者に反映されないようにします。ただし、「-assume-unchanged」は、コードを他のリポジトリにプッシュしている間、変更をローカルに保持するのに適しています。問題は、最新のコードを取得する必要があり、共有リポジトリからローカルにプルまたはマージしているときに、エラーが発生することです。

error: Your local changes to the following files would be overwritten by merge:
    app/grails-app/conf/BuildConfig.groovy
Please, commit your changes or stash them before you can merge.
Aborting

マージ元の共有リポジトリにある構成ファイルとは異なる構成ファイルがあるため、エラーは理にかなっています。しかし、この構成を変えたまま、プル(マージ)最新コードを取得するにはどうすればよいですか?回避策を避けたい:

git update-index --no-assume-unchanged app/grails-app/conf/BuildConfig.groovy
git stash save "config file"

次に、マージ後、変更した構成を元に戻します。

git stash apply

スタッシングとインデックス作成のこれらの余分な手順を回避する方法-変更されていないと仮定しますか?1つのファイル以外のすべてをプルする方法はありますか?説明されている問題に対する他の解決策はありますか?

ありがとうございました

4

1 に答える 1

4

私が理解していることから、ファイルをローカルで無視したい (つまり、他の開発者が引き続きファイルを追跡することを意味します).gitignoreその効果はグローバルであるため、役に立ちません。

ただし、ファイルを に追加すると.git/info/exclude、ローカルでは無視されます。

この文は.gitignoreからのものです:

特定のリポジトリに固有であるが、他の関連するリポジトリと共有する必要がないパターン (たとえば、リポジトリ内に存在するが、1 人のユーザーのワークフローに固有の補助ファイル) は、$GIT_DIR/info/exclude ファイルに入れる必要があります。

于 2013-02-25T17:40:25.130 に答える