6

重複の可能性:
GIT: バージョン管理されたファイルを無視する

Stackoverflow にはたくさんの答えが.gitignoreありますが、まだ答えが見つかりません。

私は既存の git プロジェクトを持ってreadme.mdおりsample_folder/、両方とも最上位に a と a があります。一般的に、これらを git(hub) リポジトリから削除したいと思います。しかし、私はそれらを無視したいと思います。つまり、特定の複製されたローカルリポジトリ、つまり展開マシンでそれらがまったくプルされないようにしたいと思います。

.gitignoreコミットされていないファイルを無視することだけですか?率直に言って、すでにコミットされているものを(pull + commitから)隠すことについては何も見つかりません...

Perforce の時代には、それぞれの「クライアント仕様」から単純に除外していました (これは、ローカルに複製されたリポジトリにかなり近いものです)。

//whatever/myProject
-//whatever/myProject/readme.md
-//whatever/myProject/sample_folder

確かに、readme とサンプル フォルダー全体を削除するだけの 2 番目のブランチに落ち着くことができます。しかし、その後、「開発」からのすべての小さな修正をマージし続ける必要があります。これは避けたいことです...私はむしろ(追跡された)ブランチよりもローカルの「例外」を好みます。

また、git rm --cachedコミットを行うときはいつでも思います(これは、「展開リポジトリ」から時々発生する可能性があります)...

4

3 に答える 3

5

おそらく私は質問を間違えましたが、次の方法で問題を解決できませんか?

git rm --cached readme.md sample_folder/*
echo "readme.md" >>.gitignore
echo "sample_folder/*" >>.gitignore
git commit -am "Untracked some files"
于 2012-07-16T18:32:34.343 に答える
2

デプロイ方法としてgitcheckoutを使用しているようです。これが機能する場合もあれば、もう少し必要な場合もあります。リポジトリに開発成果物がある場合は、もう少し必要です。

これに対処する最も明白な方法は、プルを実行してから不要なディレクトリとファイルを削除する展開スクリプトを用意することです。残念ながら、これにより、人々を混乱させる可能性のある部分的なリポジトリが残り、使用して最新の状態に保つことを忘れないようにする必要のある特別なスクリプトが追加されます。

これを処理する別の方法は、デプロイメントブランチを用意することです。ブランチを作成し、問題のあるファイルとディレクトリを削除してから、そのブランチからプルします。はい、開発ブランチからの変更をデプロイメントにマージする必要があります。これは雑用と見なされますが、安全策です。開発のチャンスを急速に増やし、同じように迅速に展開する場合は、展開サイクルに問題がある可能性があります。

開発と展開の間に、変更を検討してテストできるステップが必要です。他に何もないとしても、これは開発者Aが悪い変更をプッシュし、管理者Bが無意識のうちにそれを本番環境に引き込むことによって間違いを悪化させるのを防ぎます。また、本番環境にプッシュされるリスクを冒すことなく、開発にプッシュして他の開発者と作業を共有できるようにする必要があります。

あなたは現在、開発と展開を担当している1人の人間かもしれませんが、後でそうではないかもしれません。他に何もないとしても、これは、不安定な変更を誤って開発にプッシュし、考える前にそれを展開に引き込むことによってその間違いを悪化させることから身を守ります。

于 2012-07-16T18:20:10.773 に答える
0

これは .gitignore に関する問題ではありません。これらがコードでないgit submodule場合は、サブモジュールを介して別のリポジトリで追跡し、サーバーでコマンドを実行しないでください。または、チェックアウト後に展開マシンでこれらを削除するスクリプトを作成するだけです。

于 2012-07-16T18:08:54.440 に答える