4

gitリポジトリの一部を完全に無視したい。ディレクトリは現在リポジトリで追跡されており、次のことを確認したいと思います。

  • 誰かがアップストリームリポジトリのコンテンツを変更するたびに、コピーも変更されてもマージの競合は発生しません。
  • その内容を変更するときはいつでも、私が行うコミットはこれらの変更を反映しません

実際の内容は特に気にしません。

この問題は、ビルド中に自動的に生成されるファイルで発生します。残念ながら、誰かがたまたまそれらをリポジトリにコミットしましたが、作成者とは異なるマシンで使用すると、異なるパスなどが原因でビルドエラーが発生し、その結果、厄介なマージの競合が発生します。

AFAIKは、.gitignore追跡されていないファイルにのみ適用されるため、この目的では機能しません。

4

4 に答える 4

11

git rmやりたいと思われるファイルを簡単に削除して追跡を解除できます。ビルドプロセス中にファイルが自動的に生成される場合、これはあなたがたどりたいルートのようです。

ただし、これらのファイルを適切に生成するためのマシンのセットアップが1人だけの場合は、さらに大きな問題が存在すると思います。しかし、あなたがやりたいことをするために、これは方法です

変更を無視し始める git update-index --assume-unchanged <dir>

もう一度思いやりを始めましょう git update-index --no-assume-unchanged <dir>

于 2012-04-13T15:03:30.947 に答える
6

ファイルがリポジトリに入らないことになっている場合は、問題を修正して正しく実行してください...

  1. .gitignoreファイル/パターンをファイルに追加します
  2. リポジトリから不要なファイルを削除します
  3. 不要なファイルの追跡を解除してコミットする.gitignore
  4. 変更をプッシュ

.gitignoreそして、これらのファイルの将来git addのsを回避するため、これらの不要なファイルを再度処理する必要はありません( --forcedを除く)

于 2012-04-13T15:14:39.103 に答える
0

上記のすべての回答は、不要なファイルをgitignoreして削除する前に分割されたブランチを処理できず、それらのファイルへの変更を伴うコミットが含まれています。そのようなブランチは、マージまたはリベース時に大混乱をもたらす機会を待つためにそこに座っているだけです。

実際には、最初から.gitignore内の不要なファイルを使用して、すべてのリポジトリを最初から再作成する以外に解決策はありません。追跡されていないものは、gitで完全に壊れています。

Gitは、ユーザーが千里眼を使わないという単純な現実をモデル化できず、追跡されていないフレームワークによってどのような種類の追跡禁止(一時|中間|キャッシュ|何でも)が作成されるかどうかがわかりません。まだ書かれていますが、将来のある時点でプロジェクトに組み込まれる予定です。

于 2013-09-20T08:45:12.707 に答える
0

.gitignoreファイルの先頭にある次の行で試すことができます。

!.gitignore

これにより、gitはリストされたfirs/filesを無視するようになります。それが最善の方法かどうかはわかりませんが、私の場合はうまくいきます。例えば

!.gitignore
my_dir/
some_dir/

注:もちろん、originにプッシュするよりも.gitignoreをgitaddしてコミットする必要があります。

于 2019-07-17T09:09:18.110 に答える