Git 如何防止开发人员推送特定文件?
我有一个回购协议,供从事我的项目的开发人员使用。在这个repo中,有一个文件“.your_local_variable.php”,其中有一些路径必须由开发人员在开始处理项目之前填充,这些路径相对于他们的机器。我希望开发人员在他们的机器上第一次克隆repo时只拉一次这个文件的“模板”,但我希望阻止他们在合并请求时发送这个文件 我试图将它放在.gitignore中,并远程推送.gitignore,这样他们就可以检索它,但是“.your_local_variable.php”文件仍在命令“git status”中显示为“更改未提交”Git 如何防止开发人员推送特定文件?,git,gitignore,Git,Gitignore,我有一个回购协议,供从事我的项目的开发人员使用。在这个repo中,有一个文件“.your_local_variable.php”,其中有一些路径必须由开发人员在开始处理项目之前填充,这些路径相对于他们的机器。我希望开发人员在他们的机器上第一次克隆repo时只拉一次这个文件的“模板”,但我希望阻止他们在合并请求时发送这个文件 我试图将它放在.gitignore中,并远程推送.gitignore,这样他们就可以检索它,但是“.your_local_variable.php”文件仍在命令“git st
在远程repo上保留此文件的“模板版本”时,是否有任何方法防止推送此文件,并将其隐藏在git状态?如果该文件已签入git,只需将其添加到.gitignore将无法解决问题 您需要使用
git rm
+将文件添加到.gitignore
,从git中删除该文件,然后推送此提交-其中包含delete+ignore。每个人都需要拉这个改变,这样它就不会出现在你的git状态中
您还可以将模板版本保留在git上,只需告诉每个人将该文件复制并重命名为被忽略的文件即可。这是git上的外观:
(签入git以便人们可以检索,任何人都不应更改此文件,除非您想更改模板)每个人的模板.file
(将此文件添加到.gitignore中,每个人都应该复制模板并使用此名称编辑它)我的本地模板.file
(其中包含.gitignore
)我的本地模板.file
foo.bar
,您可以使用模板提交名为foo.bar.example
的文件,然后在.gitignore
文件中添加foo.bar
要从repo中删除文件,只需运行git rm--cached foo.bar
并提交即可
然后,您的合作者将本地环境中的foo.bar.example
文件复制到新的foo.bar
文件。一次提交:
- 删除该文件
- 将其添加到.gitignore
- 将文件的非工作版本添加到repo。例如:
.your_local_变量.phpREMOVEME
然后,每个开发人员都有一个模板文件,在他们与模板文件交互之前不会导致任何问题。另一个解决方案是该文件从环境变量中选择值,有时是默认值:
<?php
// This variable represents the path for blablabla
$somePath = getenv("PROJECT_SOME_PATH");
// This variable represents the time to wait before contacting the customer (in hours)
$timeToAnswer = getenv("PROJECT_TIME_TO_ANSWER", 42);
// .....
这样做的问题是,我猜:他们在第一次克隆repo时不会检索文件的初始模板。@JeremLachkar我为模板文件添加了一部分,所以在git中没有“只读”文件,您可以在本地拉取、更新,但无法推送?如果我的开发人员与git不太兼容,并且他们执行的是“git add.”,那么该命令是否会将gitignore中注册的文件添加到提交中?否,如果文件位于.gitignore中,并且已从源代码中删除,则在不先从.gitignore中删除它们的情况下,无法再次添加它们。