私のウェブサイト/ CMSはgitで追跡されていますが、私の.htaccessファイルを除いてはうまくいきます。このファイルは、コードを実行しているサーバー(ローカル/テスト/ライブ)によって大きく異なる必要があります。その結果、今、私はgitから完全に.htaccessを保持しています(これは私の.gitignoreファイルにあります)。しかし時にはそれは失われてしまい、いずれにしてもサイトの一部であり、追跡しておきたいのですが、リモートリポジトリにプッシュして他のサーバーの正しい構成を上書きすることは望ましくありません。 gitにファイルを保存させる方法はありますか? (または他の方法で問題を解決してください)リポジトリ上のgitバージョンコントロールファイルをプッシュ/プルすることなし
答えて
Gitのsparse checkout機能でこれを行うことができます。
git config core.sparsecheckout true
echo '*' >.git/info/sparse-checkout
echo '!.htaccess' >>.git/info/sparse-checkout
git read-tree --reset -u HEAD
これは最初の既存.htaccess
のファイルを削除します:あなたは特別な、人跡未踏.htaccess
ファイルをしたいレポで次のコマンドを実行します。しかし、今はGitの観点からは無視されているので、マシン固有のものを置くことができ、Gitはそれについて気にしません。
その他のリポジトリ(ローカルのもの)から.htaccess
ファイルを追加して管理することができます。 Gitは、このファイルを追跡し、リポジトリに保管させていただきますが、上記のまばらなチェックアウト構成を持つマシン上で、Gitはそれはリポジトリに何が異なっていても、その作業ディレクトリにローカル.htaccess
ファイルを無視します。
.htaccess
を完全に別々のgitリポジトリに保存し、コードがあるディレクトリにシンボリックリンクしてください(元のリポジトリに.gitignore
のままにしておきます)。
あなたが複数の支店を持つことができ、各サーバーごとに1つ、各ブランチは、サーバ固有の設定ファイルの独自のバージョンを持つように。その後、マスターブランチを変更すると、他のブランチはそれとマージして最新の変更を取得しますが、独自の設定を保持します。設定ファイルが変更された場合、手動でマージする必要がありますが、これはスクリプトやおそらくgithooksで自動化できるものです。
それはあなたの.htaccessファイルの内容のように聞こえるが、展開に固有であるため、実際のコードの一部ではありません。言い換えれば、これらのファイルは、gitに保存されずに、それらのうちの1つがコミットされるたびに変更を無効にするのではなく、各サーバーに合わせてデプロイメントスクリプトによって生成することができます。
それはセキュリティ上の問題だ場合Gitは、ファイルの履歴を追跡する場合は、そのリポジトリのクローンを、誰もがすべての履歴を取得する予定ですので、答えは、「なし」になるだろう。しかし、あなたがすべての場所を管理し、それを追跡する方法を望むなら、他の場所でそれをチェックするのを避けるために、おそらくgit smudgeとgit cleanフィルタがあなたのために何かをするかもしれません。ファイルをチェックアウトしてコミットすると、ファイルの内容を編集することができます。私はそれが適切だとは確信していませんが、私は実行可能な解決策を考案しようとしています。
また、別の名前(「.htaccess」ではなく)でファイルを追跡し、該当する場合は、該当する場合にのみ、追跡名に.htaccessというシンボリックリンクを作成します。
- 1. 保存するマクロとバージョンコントロールファイル
- 2. コミットを失うことなく、別のgitリポジトリのサブディレクトリとしてgitリポジトリをインポートするには?
- 3. GitリポジトリとHTTP_PROXY(Windows上SparkleShareとHTTP_PROXY)
- 4. GITリポジトリ上のモジュラーJavaアプリケーション
- 5. リモートgitリポジトリを自分のリポジトリで上書きする
- 6. Gitリポジトリ: `Gitのbisect`と
- 7. リビジョンのないgitリポジトリをリモートサーバからコピーする(.gitと.gitingoreなし)
- 8. GitエクステンションとGitoliteを使用してWindows Server上にプライベートGITリポジトリをホスト
- 9. Gitリポジトリと
- 10. なぜプッシュプルこの方法では動作しませんか?
- 11. 個別のgitリポジトリにDetatchサブディレクトリ - github上
- 12. git linuxがgitリポジトリの背後にあることを確認する方法
- 13. gitリポジトリ見つけることができない。エラー
- 14. ローカルのgitリポジトリをリモートのgitリポジトリにバックアップする方法
- 15. Gitリポジトリで `git add .git`を実行するとどうなりますか?
- 16. TFSはどこにファイルシステム上にgitリポジトリを作成しますか?
- 17. 別のものの上にgitリポジトリを追加するには
- 18. 別のgitリポジトリ内でGitリポジトリを維持する
- 19. Jenkinsワークスペースとgitリポジトリ
- 20. なぜ "git cvsimport"は空のGitリポジトリを返しますか?
- 21. gitリポジトリを別のリポジトリのフォルダ(githubページなど)にプッシュすることは可能ですか?
- 22. GIT:致命的な:ないgitリポジトリ
- 23. Gogの上流のリポジトリを使用したGitミラーの設定
- 24. NFS共有上のGitリポジトリへのプッシュは失敗します
- 25. リモートgitリポジトリをプッシュすることができません
- 26. WebStormでgitリポジトリをクローンすることはできません
- 27. GitリポジトリとGitブランチベースの開発
- 28. 巨大なgitリポジトリを分割する
- 29. 既存のGitリポジトリを新しいGit LFS対応リポジトリに移行する
- 30. git 2つの異なるリポジトリと同じディレクトリをマージする
しかし、GitはOPが望んでいるファイルの一部であるファイルを追跡しません。 – Amber
@Amber:回答の更新でさらに説明しました。 –