有没有办法“冻结”Git中的文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我现在的情况是我想开源我的项目,但是有一个源文件,我想发布一个“干净”的版本,但是在本地使用一个单独的版本。Git是否有一个功能,我只需要提交一次文件,并且从现在起它就不再寻找该文件上的更改了?

我尝试将该文件添加到.gitignore,但在第一次执行git add -fgit commit我继续编辑它,git status显示已更改的文件。理想的行为是git不显示从现在起修改过的文件,即使我已经编辑过它。

我还会感兴趣的是,在推出开源回购之前,其他人是如何“清理”他们的私有代码/数据的代码库的,尤其是在Git上。

提问于
用户回答回答于

实现这一目标的最简单方法(以我的经验来看,也是最好的证明)是使用以下结构:

版本化

./application.code
./config.code
./config.local.code.sample
./.gitignore

应用程序代码

include('./config.code')
if is_file('./config.local.code')
  include('./config.local.code')
end

config.code

username = 'root'
password = 'password'

config.local.code.示例

username = 'replace with your local username and rename file to config.local.code'
password = 'replace with your local password and rename file to config.local.code'

.gitignore

config.local.code

无版本(可选)

./config.local.code # will not be picked up by git due to .gitignore

config.local.code

username = 'Suan'
password = 'myownpass'

用户回答回答于

在回购程序中运行以下命令,希望在其中执行一个特殊的、未跟踪的命令local.txt档案:

git config core.sparsecheckout true
echo '*' >.git/info/sparse-checkout
echo '!local.txt' >>.git/info/sparse-checkout
git read-tree --reset -u HEAD

这将首先删除现有local.txt档案。但是现在从Git的角度来看,它被忽略了,所以可以在那里放置一个特定于机器的,Git不会为此而烦恼。

然后可以添加和管理已发布的local.txt一些文件其他储存库。

扫码关注云+社区