1

私は GitHub にかなり慣れていませんが、小規模な Web 開発プロジェクトのローカル バージョンの追跡のために、しばらくの間 GitHub を使用しています。大量の HTML、CSS、および JS ファイルと、MySQL データベースにアクセスするための PHP ファイルを含むプロジェクトがあるとします。PHP ファイルには、パスワードを含む私の MySQL 資格情報が含まれているため、明らかにこのファイルを公開したくありません。PHP ファイルを含め、プロジェクトへのすべての変更をローカルで追跡したいのですが、プロジェクトをオンラインにしたい場合に備えて、このファイルを同期から除外する方法が必要でした。

だから私の質問は: ローカル リポジトリで追跡されている間に、GitHub アカウントとの同期からファイルを無視できますか? そして、私が完全に間違った方向に進んでいる場合に備えて、この問題に対するより確実な解決策を喜んで聞きます. ありがとう!

4

4 に答える 4

2

ファイルの一部を省略するための解決策はたくさんありますが、 gitを使い始めたばかりの場合は複雑すぎます。ほとんどのトリックは、本番サイトのチェックアウト時にファイルを解析および作成する、いわゆるフィルター、コマンドを中心に展開されます。しかし、これらは必要ありません。

最も簡単なトリックは、アプリケーションをもう少し安全で移植性の高いものにするという追加の利点を提供します。

すべての秘密データが1つのファイルに保持され、非常に厳密なアクセス許可を取得できるため、より安全です(たとえば、コードベースへのFTPにアクセスできるユーザーは、資格情報を表示できません)。チームが独自の開発マシンで独自の資格情報を希望どおりに実行できるため、移植性が向上します。たとえば、XAMPを使用している人は、プロジェクトを管理するために仮想マシンまたは自作のスクリプトを使用している人とは異なるデータベース名を持っている可能性があります。

サーバー上でファイルを作成します/path/only/www-data/has/read-access/secret.inc

<?php
/** Hashing **/
define("SECRET_HASH", "hogwards");

/** Database **/
define("DB_USER", "harry");
define("DB_PASS", "alora");
?>

次に、あなたのsettings.php、またはあなたが今これらのクレジットを保存している場所で、:

<?php
require("/path/only/www-data/has/read-access/secret.inc");
// Or slightly more portable
// require("../etc/secret.inc");
?>

定義を持っているが、値として空の文字列を使用しているsecret.inc新しい共同作業者の例をチェックインすることもできます。secret.inc.example

settings.phpこれで、他のすべてのコミットと一緒にプッシュすることができます。そして、本番環境で見つかった「secrets.inc」を取得します。データベースなどのproudction-serverログインの詳細を使用します。

于 2012-12-27T17:45:29.790 に答える
1

一部のコンテンツを省略してコミットをプッシュすることはできません。これを行うと、SHA1 識別子が変更され、別のコミットが発生します。

あるブランチで公開開発を行い、それらの変更を別のブランチにマージして、非公開にする必要がある構成情報を追跡することができます。コミットされていない変更を実行しながらブランチを切り替えることができるため、チェックアウトしたプライベート ブランチを使用して開発とテストのほとんどを行うこともできます。コミットを行うためにパブリック ブランチに切り替えてから、それらの変更を元に戻してマージします。

ただし、プライベート ブランチではなく、パブリック ブランチのみをプッシュするようにプッシュする場合は注意が必要です。一般に、プッシュしたくない情報は、追跡から完全に無視できる小さな別のファイルに保存することをお勧めします。

于 2012-12-27T15:51:26.360 に答える
0

git リポジトリで追跡されているファイルは無視できます。これは、同様のケースでは非常に一般的です。

プロジェクトのルートに .gitignore というファイルがあります。このファイルには、git リポジトリで追跡したくないファイルのパスを入れます。

https://help.github.com/articles/ignoring-filesで使用方法の完全な説明を見つけてください。

あなたの場合、この「データベース構成」ファイルをサーバーに手動で送信する必要があります。

于 2012-12-27T14:06:15.927 に答える
0

いいえ、これは不可能ですが、あなたのやり方は正しくないと思います。クレデンシャルを PHP ファイルに保存するのは悪い習慣です。設定を含む別のファイルが必要ですが、その設定ファイルをどこに置くか、およびリポジトリにスタブ設定ファイルを配置することがどれほど重要であるかによっては、同じ問題に戻る可能性がありますが、別のファイルになります。 .

于 2012-12-27T14:27:58.477 に答える