防止文件被删除
Prevent File from Being Removed
我正在开发一个 MVC.NET 项目,我有位于项目根目录中的外部配置文件。
在某些时候,我不小心将这些文件提交到 Git 并推送了更改。
经过多次提交之后,技术负责人意识到我的错误并将其设置为从 Git 中删除,将文件添加到 .gitignore
,并保留更改。
现在我有了 Git 忽略的文件,但是,如果我更改分支,有时它会拉入删除这些文件的提交。
所以我不得不重新触摸文件并重新添加所有内容(很烦人)。
有没有一种方法,即使我更改分支,git bash 也不会删除我的外部配置文件?
我在“Git - Difference Between 'assume-unchanged
' and 'skip-worktree
'”中记录了 git update-index --skip-worktree/--assume-unchanged
如何 不是 是一个好的解决方案。
(参见最后一部分,“Git 2.25.1(2020 年 2 月)”部分)
我宁愿使用:
- a
config.tpl
(带有占位符值的模板文件)。
- 一个能够获取模板文件并在结帐时自动生成实际文件(保持未跟踪、私有)的脚本
- a
.gitignore
忽略生成的文件(你已经有了)
- a
.gitattribute
声明一个 smudge
内容过滤器(见下文)
通过 content filter driver, using a .gitattributes
declaration.
自动生成配置文件
(图片来自 "Customizing Git - Git Attributes" from "Pro Git book"))
一旦您在本地配置中声明内容文件管理器驱动程序,它就会在 git checkout
上自动为您生成(未跟踪的)文件。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。
这样,再多的 git 签出也不会删除所述文件。
此外,在切换分支时尝试更新的 git switch
命令:它确实比 git checkout
.
更好地尊重文件
我正在开发一个 MVC.NET 项目,我有位于项目根目录中的外部配置文件。
在某些时候,我不小心将这些文件提交到 Git 并推送了更改。
经过多次提交之后,技术负责人意识到我的错误并将其设置为从 Git 中删除,将文件添加到 .gitignore
,并保留更改。
现在我有了 Git 忽略的文件,但是,如果我更改分支,有时它会拉入删除这些文件的提交。
所以我不得不重新触摸文件并重新添加所有内容(很烦人)。
有没有一种方法,即使我更改分支,git bash 也不会删除我的外部配置文件?
我在“Git - Difference Between 'assume-unchanged
' and 'skip-worktree
'”中记录了 git update-index --skip-worktree/--assume-unchanged
如何 不是 是一个好的解决方案。
(参见最后一部分,“Git 2.25.1(2020 年 2 月)”部分)
我宁愿使用:
- a
config.tpl
(带有占位符值的模板文件)。 - 一个能够获取模板文件并在结帐时自动生成实际文件(保持未跟踪、私有)的脚本
- a
.gitignore
忽略生成的文件(你已经有了) - a
.gitattribute
声明一个smudge
内容过滤器(见下文)
通过 content filter driver, using a .gitattributes
declaration.
(图片来自 "Customizing Git - Git Attributes" from "Pro Git book"))
一旦您在本地配置中声明内容文件管理器驱动程序,它就会在 git checkout
上自动为您生成(未跟踪的)文件。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。
这样,再多的 git 签出也不会删除所述文件。
此外,在切换分支时尝试更新的 git switch
命令:它确实比 git checkout
.