我有一个file.config坐在我的主枝上。
我想从我的主人那里创建一个特性分支,但是我不想我的file.config出现在其中。
我知道我仍然想跟踪该文件发生的更改。
有办法吗?
编辑:对于上下文,config.file是一种“按钮”,用于在生产环境中部署嵌套在当前分支中的代码。这就是为什么我不希望它出现在“主人”之外的任何其他分支中,这限制了人为错误的风险。

最佳答案

你真的,说真的,在git里得不到你想要的东西。原因是非常基本的:文件不是由于在某个分支中或不在某个分支中而被跟踪或未被跟踪。使文件被跟踪(与未跟踪相比)的原因是它存在于(或不存在于)索引中。同时,分支名称只标识一个特定的提交,它们标识的一个提交在任何时候都是可变的……每个提交可以同时在多个分支中。
这三个事实—(1)tracked与untracked是当前索引内容的一个属性,因此没有直接连接到任何分支名称;(2)分支名称随着时间的推移而移动;(3)提交是在多个分支中,所有这些都以一种对您的用例非常不利的方式交互。
要理解这些,您需要知道提交、索引和工作树是如何交互的,在使用git checkout与分支名称或提交散列时会发生什么,以及通常如何创建和移动分支。这些都被捆绑在一个大的Gordian Knot。而解决实际问题的方法是相似的:甚至不要试图解开这个结,只需保留一个配置的原型来避免整个混乱。无论您使用什么样的流程需要它,都可以根据需要构建或获取它:这可能很简单:如果我刚刚运行了git checkout master,请将原型复制到适当的位置;如果我刚刚运行了一个git checkout,使我离开master,请删除原位副本,只留下原型。
(如果您希望自动化此操作,请查看post-checkout挂钩。)

09-04 11:45
查看更多