Я хочу показать некоторые из моих работ, загрузив их в свою учетную запись GitHub. Тем не менее, есть некоторые файлы, содержащие пароли, например, соединения с базой данных.
Есть ли способ пометить файл как недоступный для Git, чтобы он не мог появиться на GitHub?
.gitignore
. AFAIK, нет 100% полностью защищенного способа,git
чтобы избежать фиксации конкретного файла во всех случаях. Хотя это можно рассматривать как функцию ... позволяющую явным командам переопределять общие конфигурации.Ответы:
Во-первых, нет никакого способа, чтобы некоторые файлы и коммиты были видны в вашем локальном Git-репозитории, но как-то не видны в GitHub; если у вас есть файл, зафиксированный в Git, он появится в GitHub.
Во-вторых, не существует простого и практичного способа пометить отдельный файл как «непригодный для использования». Но определенно есть способ игнорировать файл в репозитории Git: добавляя файлы, включая их относительный путь, если необходимо - в
.gitignore
файл :Создать простой
.gitignore
довольно просто, так как это простой текстовый файл. Так, например, если бы у меня былconfig.php
файл в вашем корне, вы бы сделали это; Предполагается, что вы используете PHP, но концепция применима для любой установки. Также я использую Nano в качестве моего текстового редактора в этом примере, но не стесняйтесь использовать любой текстовый редактор, который вы обычно используете для этого:И просто добавьте это имя файла в этот файл:
Сохраните его, и теперь Git просто проигнорирует этот файл.
Тем не менее, что я хотел бы сделать для таких настроек, как это, чтобы держать пример конфигурации / примера в чистом виде от деликатных особенностей в репозитории, поэтому у меня есть некоторая ссылка на то, что формат файла конфигурации - это файл с именем примерно так:
Таким образом, вы точно знаете, как
config.php
файл должен быть настроен через Git,config.SAMPLE.php
и вы можете быть уверены, чтоconfig.php
Git никогда не затрагивает его.Кроме того, если вы планируете демонстрировать свой код, вы должны ожидать, что кто-то попытается взять этот код и каким-то образом внедрить его в своей собственной системе. Помните, что мы не вы, и без примера файла конфигурации в вашем репо, люди не будут действительно понимать, как реализовать код самостоятельно. Черт возьми, они могут даже подумать, что вы не компетентны, потому что вы не предоставили базовый пример конфигурации.
источник
database_url = Environment.DATABASE_URL
и оставить комментарий выше, например# postgres://username:password@localhost/dbname
.Вы также можете добавить хук перед фиксацией для реализации проверок работоспособности. В каталоге
.git/hooks
каждого репозитория git есть несколько примеров скриптов.Вызываемый скрипт
pre-commit
выполняется, если он существует перед каждым коммитом, и ненулевое возвращаемое значение отменяет коммит.Например, у вас может быть простой скрипт вроде этого:
И если это
filename
совпадает, фиксация завершается неудачно.источник
.gitignore
является очень распространенной и общепризнанной практикой для любого, кто использует Git. Но сценарий предварительной фиксации не используется большинством пользователей Git. Это требует определенных знаний по настройке и истинной причины, почему такой метод предпочтительнее простого использования.gitignore
файла. Но это очень полезно для некоторых более сложных случаев, но это определенно концепция, которую вы бы использовали, когда действительно знаете, что вам нужно ее использовать.Что сказал @JakeGould. В некоторых случаях вы также можете использовать специальные биты файлов, такие как
skip-worktree
илиassume-unchanged
которые могут быть установлены следующим образом; различия между ними см. в ответе «Переполнение стека» :Который затем будет скрывать дополнительные изменения в уже существующем файле и который вы можете использовать, если вы действительно хотите, чтобы файл был там после каждого извлечения. Но я бы посоветовал вам использовать его, только если вы действительно знаете, что делаете.
источник
Используйте
.gitignore
как @JakeGould сказал. Кроме того, некоторая связанная информация:.gitignore
предотвращает отслеживание файлов; если они уже отслежены, используйтеgit rm --cached
для их удаления$GIT_DIR/info/exclude
также будут игнорироваться~/.gitconfig
также игнорируются.Смотрите официальную документацию Git для более подробной информации.
источник
Чтобы расширить на вопросы Джейка и 46: одна очень хорошая практика - иметь постоянное расширение, которое вы используете для файлов, в которые вы включаете личную информацию, и использовать,
.gitignore
чтобы всегда исключать файлы с таким расширением глобально (используя.gitconfig
файл, как упоминалось в другом месте, чтобы его всегда игнорировали для вашего пользователя).Таким образом, вы можете иметь, например:
и если вы исключили
*.exc
глобально, то вы знаете, что оно не будет зафиксировано, даже если вы забудете отдельно исключить этот конкретный файл.источник