忽略对跟踪文件的更改,而不使文件无法“git add”
你可以跳过序言忽略对跟踪文件的更改,而不使文件无法“git add”,git,git-index,Git,Git Index,你可以跳过序言 我有一个npm包,其结构如下: lib/index.js src/index.coffee 源文件是一个CoffeeScript文件。我有一个从源文件构建JavaScript文件的make目标。直到最近,我在每次提交中都包含了对JavaScript文件的更改,但现在我使用了一个预发布脚本: XYZ = node_modules/.bin/xyz --script scripts/prepublish .PHONY: release-major release-minor r
我有一个npm包,其结构如下:
lib/index.js
src/index.coffee
源文件是一个CoffeeScript文件。我有一个从源文件构建JavaScript文件的make目标。直到最近,我在每次提交中都包含了对JavaScript文件的更改,但现在我使用了一个预发布脚本:
XYZ = node_modules/.bin/xyz --script scripts/prepublish
.PHONY: release-major release-minor release-patch
release-major: LEVEL = major
release-minor: LEVEL = minor
release-patch: LEVEL = patch
release-major release-minor release-patch
@$(XYZ) --increment $(LEVEL)
预发布脚本非常简单:
#!/usr/bin/env bash
set -e
rm -f lib/index.js
make lib/index.js
git add lib/index.js
这意味着每当我发布新版本时(例如,通过运行makereleasepatch
),将重建lib/index.js,并将其添加到发布提交中。在这之前一切都很顺利
由于发布脚本会自动更新编译后的文件,因此我不再希望在每次提交时手动更新它。问题是,在运行
maketest
之后,git status
将lib/index.js列为修改后的跟踪文件。我希望避免意外提交此文件,因此我希望防止它被git status
列出
我尝试的第一件事是将/lib/
添加到.gitignore。但这不起作用,因为lib/index.js已经被跟踪
然后我发现了git更新索引——假设未更改。我以lib/index.js
作为参数运行此命令,文件不再按git status
列出。到目前为止,一切顺利。但是现在,git add lib/index.js
不再工作,因此预发布脚本将无法完成其工作
我相信预发布脚本可以在git add
之前运行git update index--no假定lib/index.js保持不变
,然后可以使用git update index--假定lib/index.js保持不变
还原位。这真的是最好的方法吗
总之,如何在保留git添加
文件的能力的同时忽略对跟踪文件的更改?只需检查git添加-f
(git添加--force
)是否能够添加文件,而无需取消设置假定未更改
位
如果这不起作用,那么:
我相信预发布脚本可以在git add
之前运行git update index--no假定lib/index.js保持不变
,然后可以使用git update index--假定lib/index.js保持不变
还原位
使用这种方法,这是您所能做的最好的
唯一的另一种方法是git update index--(no-)跳过worktree lib/index.js
(that),但在您的情况下,这是相同的。谢谢,@VonC<不幸的是,code>git add-f lib/index.js
没有效果。如果我在假设未更改
方面遇到问题,我将查看跳过工作树
是否是一个更好的选择。我不清楚这两种方法有何不同(即使阅读了对报告的回复)。