这是关于C#Xamarin项目的git问题。
我们在Assets文件夹中有几个文件,这些文件通过预构建事件命令复制到其中。编译器不会直接使用这些文件,但是如果缺少这些文件,我们的CI服务器将使构建失败。所有开发机器上的文件版本可能会有所不同,因此,每当我们在机器上构建文件时,文件都会被复制并git显示它们已更改
这很烦人,因为对这些文件的更改实际上并不重要,因此我们无需提交它们。我想忽略对这些文件的更改,但不希望将它们从存储库中删除。如果如上所述将它们删除,则CI将失败。如果我整理“删除并停止跟踪”,则它们将在CI服务器拉出时从CI服务器中删除。
从其他堆栈溢出问题中,我都尝试了这两个问题:
git update-index --assume-unchanged [path]
git update-index --skip-worktree [path]
两个都成功隐藏了文件更改,但是都存在以下问题。当我尝试切换分支时,它告诉我必须在切换之前放弃未分段的更改并列出这些文件。然后输入:
git reset -- .
git checkout .
在我撤消update-index命令之前,这两种方法都不能放弃对文件的更改,只有这样我才能放弃更改并允许切换分支。
有解决方案吗?我们是在框外还是在做错了什么?
答案 0 :(得分:0)
这是一个非常普遍的问题。
有时是众所周知的custom.js
,custom.min.js
,custom.css
,custom.min.css
等。有时,它是另一种“源文件”,为了使软件能够正常工作,它们必须以某种方式存在,但我们并不真正在意它们中的内容。
听起来很熟悉?称为编译文件。现在我知道它们不是实际上编译文件-它们是源文件。但是出于所有目的和目的,这些文件与编译文件几乎相同。它们并不是您真正关心的任何东西,而是计算机只是想出了如何维护它们。
为什么将它们与实际的编译文件区别对待?您提到每次构建时,预构建事件命令都会使这些文件生成。这实际上使它们成为了构建过程的一部分。
解决方案非常简单。在CI服务器上,包括在实际编译之前生成文件的预构建事件,然后将文件添加到.gitignore
文件中。