我在我的机器上设置了一个本地git。当我初始化git时,我添加了预编译的库和二进制文件。但是,现在在开发过程中,我不想间歇性地检查这些文件。我不想从repo中删除这些文件。在完成开发之前,有没有办法不跟踪这些文件。 (我想我不能使用.gitignore,因为它仅适用于那些不在git中的文件。我想暂时禁用文件跟踪。)
答案 0 :(得分:655)
git update-index应该做你想做的事情
这将告诉git你想要开始忽略对文件的更改
git update-index --assume-unchanged path/to/file
当你想再次开始追踪时
git update-index --no-assume-unchanged path/to/file
答案 1 :(得分:226)
您可以在
之后保持文件未跟踪git rm -r --cached <file>
使用
添加文件git add -u
他们推或做任何你想做的事。
答案 2 :(得分:106)
git rm --cached
但是,您不应该首先提交已编译的二进制文件和外部依赖项。使用像Bundler这样的工具来代替它们。
答案 3 :(得分:22)
使用以下命令取消记录文件
git rm --cached <file path>
答案 4 :(得分:8)
git-book在第2.4节“撤消事物”中提到了这一点。基本上,您需要做的是将某些文件的索引状态重置为HEAD状态,即最新结账(或提交)的状态。这会将文件暂存到当前索引。此任务的命令是git reset
。[1]
因此,您必须执行的命令是:
git reset HEAD /path/to/file
新版本的git(我相信自1.6左右)在执行git status
时会给出此命令(以及更多)作为提示。这些版本非常人性化。个人提示:如果您只是暂存一些文件,请使用git add -i
。这将启动交互式临时工具,这使得事情变得特别容易。另外,我强烈建议您阅读本书,因为在实际情况中使用git非常明确。
答案 5 :(得分:5)
我假设您正在询问如何删除构建文件夹或bin文件夹中的 ALL 文件,而不是单独选择每个文件。
您可以使用此命令:
git rm -r -f /build\*
确保您位于构建目录的父目录中
此命令将以递归方式“删除”bin /或build /文件夹中的所有文件。通过单词delete我的意思是git将假装这些文件被“删除”并且不会跟踪这些文件。 git确实标记了这些文件处于删除模式。
请确保您的.gitignore已准备好接受即将到来的提交 Documentation : git rm
答案 6 :(得分:4)
不是原始问题的答案。但这可能对某人有所帮助。
要查看您所做的更改(知道哪些文件被标记为--asume-unchanged )
git ls-files -v
生成的文件列表将包含一个带有一个字符的前缀(例如:H或h) 如果它是小写字母(即h),则文件标记 - 保持不变
答案 7 :(得分:2)
assume-unchanged
是skip-worktree
的替代方法。后者的含义有所不同,例如“ Git不应跟踪此文件。开发人员可以并且鼓励其进行本地更改。”
在您不希望跟踪(通常是较大的)构建文件的更改的情况下,assume-unchanged
是一个不错的选择。
在文件应具有默认内容且开发人员可以自由地在本地修改文件但不应该将其本地更改返回到远程存储库的情况下,skip-worktree
是更好的选择。
另一个不错的选择是在存储库中有一个默认文件。假设文件名是BuildConfig.Default.cfg
。开发人员应将其在本地重命名为BuildConfig.cfg
,他们可以进行所需的任何本地更改。现在,将BuildConfig.cfg
添加到.gitignore
以便取消跟踪文件。
请参见this question,该文本在接受的答案中提供了一些很好的背景信息。
答案 8 :(得分:1)
git reset [file]
将文件从暂存区域恢复到工作目录
我经常忘记将节点模块添加到.gitignore文件中,这解决了这个问题。
答案 9 :(得分:1)
这对我有用
git reset HEAD'文件名'
答案 10 :(得分:0)
删除所有Untrack文件。试试这个终端命令
git clear -fdx
答案 11 :(得分:-1)
删除未跟踪的文件和文件夹设置git clean -fdx