在git

时间:2016-06-22 11:37:10

标签: git github version-control

我的网络项目中有一个文件,用于设置网站数据库连接。显然,这对站点的分段和实时分支有不同的设置,我需要它在我的机器上包含我的本地开发设置。 该文件需要在repo中,但现在它不需要被跟踪。

我遵循了这个问题(和其他人)的建议: How to ignore files only locally in git?已停止git告诉我有关给定分支的更改,但如果我尝试更改分支,从我当前的bug修复分支说到分段,或者如果我尝试将分段合并到当前分支,git警告我本地的更改将被覆盖,我被锁在分支机构中。

到目前为止,我发现的唯一“解决方案”是取消忽略该文件,提交差异,或者修改我的本地文件,使其与服务器分支匹配。

让所有分支忽略配置文件的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

尝试忽略git中跟踪文件的仅本地更改只会导致问题。

在执行git状态时,当git从文件系统读取更改时,像--assume-unchanged和--skip-worktree这样的选项只会产生影响。当您执行git checkout等操作时,git不会忽略对这些文件的更改,从而为您提供遇到的错误。

根据我的经验(和其他人),最好不要跟踪实际的配置文件。相反,以不同的名称跟踪模板会更好。这可以防止在复制/解压缩文件时覆盖实际配置文件或必须排除/忽略文件的许多问题。

答案 1 :(得分:0)

请改为in this answer

if (Object.keys({}).length) {
  console.log('Object is not Empty');
} else {
  console.log('Object is Empty');
}

console.log(Object.keys({}).length);

我详细介绍了" How do you make Git ignore files without using .gitignore?"

中两个git update-index --skip-worktree -- <local-only_file> 选项(update-index--assume-unchanged)之间的区别

答案 2 :(得分:-1)

您可以使用assume-unchanged标志
https://git-scm.com/docs/git-update-index

- [无糖]假设-不变

  

指定此标志时,不会更新为路径记录的对象名称。

     

相反,此选项设置/取消设置路径的“假定未更改”位。

     

当“假定未更改”位打开时,用户承诺不更改文件并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。

     

如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

enter image description here