Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么一个干净的git克隆会修复一个失败的构建?_Git_Webpack_Continuous Integration - Fatal编程技术网

为什么一个干净的git克隆会修复一个失败的构建?

为什么一个干净的git克隆会修复一个失败的构建?,git,webpack,continuous-integration,Git,Webpack,Continuous Integration,我有一个项目,这取决于网页建设。我从一个团队成员那里得到了一个新的分支,我签出了这个分支,并进行了git重置--hardon。运行构建后,它会出错。当我执行一个干净的git克隆并签出新的分支时,它就工作了。有什么好处?我如何才能做到不必再次完全克隆项目 我得到的错误如下: ERROR in [at-loader] ./webpack.config.ts:312:5 TS2339: Property 'replace' does not exist on type '{}'. ERROR

我有一个项目,这取决于网页建设。我从一个团队成员那里得到了一个新的分支,我签出了这个分支,并进行了
git重置--hard
on。运行构建后,它会出错。当我执行一个干净的
git克隆并签出新的分支时,它就工作了。有什么好处?我如何才能做到不必再次完全克隆项目

我得到的错误如下:

ERROR in [at-loader] ./webpack.config.ts:312:5
    TS2339: Property 'replace' does not exist on type '{}'.

ERROR in [at-loader] ./webpack.config.ts:317:103
    TS2339: Property 'value' does not exist on type '{}'.

ERROR in [at-loader] ./webpack.config.ts:545:5
    TS2339: Property 'getProperty' does not exist on type 'LoDashExplicitObjectWrapper<NodeConfig>'.

ERROR in [at-loader] ./webpack.config.ts:545:17
    TS7006: Parameter 'n' implicitly has an 'any' type.
[at loader]中的
错误/webpack.config.ts:312:5
TS2339:类型“{}”上不存在属性“replace”。
[at loader]中出错/webpack.config.ts:317:103
TS2339:类型“{}”上不存在属性“value”。
[at loader]中出错/webpack.config.ts:545:5
TS2339:类型“LoDashExplicitObjectWrapper”上不存在属性“getProperty”。
[at loader]中出错/webpack.config.ts:545:17
TS7006:参数“n”隐式具有“any”类型。
步骤如下:(这会产生错误)

git签出提取\u css

git重置——硬的

纱线

或者,通过干净的回购协议:(这是有效的)

git clone new

cd新增

git签出提取\u css


纱线

您可能需要
-x
。其余部分从

重要的是要仔细考虑哪些文件<代码> Git Cube < /代码>清除。正如上面所说,它:

通过递归删除不存在的文件来清理工作树 在版本控制下,从当前目录开始

通常,只删除Git未知的文件,但是如果使用
-x
选项 如果指定,则忽略的文件也将被删除。例如,这可以是 用于删除所有生成产品

第一段未定义“不受版本控制”的含义。然而,第二段给了我们一个强有力的线索,
-d
论点的描述巩固了它所提供的,即我们对“未追踪”有一个明确的定义:

-d

    除了删除未跟踪的文件外,还删除未跟踪的目录
跟踪与未跟踪有一个很好的、简单的Git特定定义:未跟踪的文件是不在索引中的文件(因此,跟踪的文件当然是索引中的文件)

记住,Git的索引是构建下一次提交的地方。索引开始时匹配当前提交和您在其上运行的git checkout
,即当前分支的尖端。提交中的每个文件也都在当前索引中。Git将文件从提交复制到索引,然后复制到工作树,工作树将文件放入计算机其他部分可以处理的表单中(提交和索引中的内部表单本质上是一个Git-only表单)

对于工作树来说,保存不在索引中的其他文件是很正常的。每当我们使用从源代码构建东西的程序时,例如,
.o
.so
来自C或其他编译代码的文件,或
.pyc
.pyo
字节编译的Python文件,或是现在经常调用的任何其他东西,我们最终得到的都是不受版本控制的东西。我们不会将它们添加到索引中,因此它们是未跟踪的

然而,Git喜欢用不同的方式将它们分开。未跟踪的文件可能是一个讨厌的东西:Git一直缠着我们,警告这个文件和一个文件都未跟踪,我们是否应该添加它们?我们知道我们不应该这样做,所以我们告诉Git请闭嘴,按路径名或文件模式(如
*.o
)或
.gitignore
文件中的任何内容列出文件。这让Git闭嘴

但它也改变了git clean处理这些文件的方式。默认情况下,
git clean
只删除它会抱怨的内容。因为我们通常告诉Git忽略构建工件,所以普通的
Git clean-f
不会删除它们。我们需要
git clean-fx

请注意,当未跟踪的文件位于没有跟踪文件的目录(或“文件夹”)中时,Git通常会出于报告目的将它们集中在一起,并表示整个目录未跟踪。在这种情况下,
git clean-fx
仍将保留这些内容:您需要
git clean-dfx
删除它们,然后删除现在为空的目录本身。(请注意,如果该目录中有任何跟踪文件,则此规则不再适用。)


正如描述中提到的,这一切都必须从工作树的顶层运行,因为它从“当前目录”开始。还需要注意的是,任何子git或子模块都会阻止git clean在该子目录中工作;对于这些情况,最好在单独的git存储库中重复
git clean
。(例如,对于子模块,您可以使用
git submodule foreach
访问并清理每个子模块。)

会出现什么错误?您在
重置
后是否执行了与克隆后相同的步骤?一个可能的原因是,
node\u模块
不同,需要(重新)安装,但如果没有错误,我们无法判断。@MichaelJungo我已经更新了帖子!值得一提的是,我们的
node\u模块
包含一些自定义库,这些库在我们的存储库中提交,其余的库由
warn
填充。在
git重置之后,
git状态
会给您带来什么。git重置不会清除未跟踪的文件目录。
git clean
()将工作目录设置为与存储库签出完全相同。
git status
=
working directory clean
git clean-f
,然后
warn
:相同的错误…如果没有
-x
git clean