GitHubアカウントにアップロードして、作品の一部を見せたいです。ただし、データベース接続など、パスワードを含むファイルがいくつかあります。
GitHubに表示されないように、Gitでファイルをコミット不可としてマークする方法はありますか?
.gitignore
。私の知る限りgit
、すべての場合に特定のファイルをコミットしないように指示する100%完全な証明方法はありません。これは機能とみなされるかもしれません...
GitHubアカウントにアップロードして、作品の一部を見せたいです。ただし、データベース接続など、パスワードを含むファイルがいくつかあります。
GitHubに表示されないように、Gitでファイルをコミット不可としてマークする方法はありますか?
.gitignore
。私の知る限りgit
、すべての場合に特定のファイルをコミットしないように指示する100%完全な証明方法はありません。これは機能とみなされるかもしれません...
回答:
GitHubに表示されないように、Gitでファイルをコミット不可としてマークする方法はありますか?
まず、ローカルのGitリポジトリにはいくつかのファイルとコミットを表示する方法はありませんが、GitHubには表示されません。Gitでコミットされたファイルがある場合、GitHubに表示されます。
第二に、個々のファイル自体を「コミットできない」とマークする簡単で実用的な方法はありません。しかし、Gitリポジトリ内のファイルを無視する方法は間違いなくあります。必要— .gitignore
ファイルへ:
.gitignore
ファイルには、Gitは無視することを意図的に追跡されていないファイルを指定します。Gitによって既に追跡されているファイルは影響を受けません。詳細については、以下の注を参照してください。
ベーシックの作成は.gitignore
、プレーンテキストファイルであるため、かなり簡単です。そのため、たとえばconfig.php
、ルートにファイルがある場合、これを実行します。PHPを使用していると仮定しますが、この概念はあらゆるセットアップに適用されます。また、この例ではNanoをテキストエディターとして使用していますが、これに通常使用するテキストエディターは自由に使用できます。
nano .gitignore
そして、そのファイルにそのファイル名を追加するだけです:
config.php
保存すると、Gitはそのファイルを無視します。
そうは言っても、このようなセットアップでやりたいことは、サンプル/サンプルの構成をリポジトリ内の機密性の高い仕様で無効化することです。そのため、構成ファイルの形式は次のようなファイルです。
config.SAMPLE.php
そうすれば、config.php
ファイルのセットアップ方法を正確に把握config.SAMPLE.php
できconfig.php
、Gitが実際のファイルに触れないようにすることができます。
また、コードを披露する予定がある場合は、誰かがそのコードを取得して何らかの方法で自分のシステムに実装しようとすることを期待する必要があります。私たちはあなたではなく、あなたのリポジトリにサンプル設定ファイルがなければ、人々は自分でコードを実装する方法を本当に理解しないでしょう。基本的な設定例を提供しなかったので、彼らはあなたが有能ではないと思うかもしれません。
コミット前フックを追加して、健全性チェックを実装することもできます。.git/hooks
すべてのgitリポジトリのディレクトリにはいくつかのサンプルスクリプトがあります。
呼び出されるスクリプトpre-commit
は、各コミットの前に存在する場合に実行され、ゼロ以外の戻り値はコミットを中止します。
たとえば、次のような簡単なスクリプトを作成できます。
#! /bin/sh -e
git ls-files --cached | grep -qx 'filename' && { echo "Excluded file included in the commit" >&2; exit 1; }
exit 0
そして、それがfilename
一致する場合、コミットは失敗します。
.gitignore
されないようにすること」 です。ただし、Gitのほとんどのユーザーは事前コミットスクリプトを実際に使用していません。セットアップに関するある程度の知識が必要であり、単に.gitignore
ファイルを使用するよりもこのような方法が望ましい理由がいくつかあります。しかし、これはいくつかのより複雑な場合に非常に役立ちますが、使用する必要があることが本当にわかっている場合に使用するコンセプトです。
@JakeGouldが言ったこと。いくつかの例では、あなたはまた、のような特殊なファイルのビットの使用作ることができるskip-worktree
か、assume-unchanged
次のように設定することができます。2つの違いについては、このStack Overflowの回答を参照してください。
git update-index --assume-unchanged <file>
これにより、既存のファイルへの追加の変更が非表示になり、すべてのプルの後にファイルが本当に必要な場合に使用できます。しかし、自分が何をしているかを本当に知っている場合にのみ使用することをお勧めします。
.gitignore
@JakeGouldが言ったようなを使用してください。さらに、いくつかの関連情報:
.gitignore
ファイルが追跡されないようにします。それらが既に追跡されている場合は、それらgit rm --cached
を削除するために使用します$GIT_DIR/info/exclude
も無視されます~/.gitconfig
も無視されます。詳細については、公式のGitドキュメントを参照してください。