Untrack files from git temporarily
我在我的机器上设置了一个本地Git。当我初始化git时,我添加了预编译的libs和二进制文件。但是,现在在我的开发过程中,我不想间歇地检入那些文件。我不想从repo中删除这些文件。在我完成开发之前,有没有办法不跟踪这些文件呢?(我想我不能使用.gitignore,因为它只适用于那些不在git中的文件。我想暂时禁用文件跟踪。)
- 相关stackoverflow.com/q/936249/11343
- 可能是git的副本:我可以提交一个文件并忽略内容更改吗?
Git更新索引应该做你想做的。
这将告诉Git您要开始忽略对文件的更改git update-index --assume-unchanged path/to/file。
当你想重新开始追踪的时候江户十一〔一〕号
GitHub文档:更新索引
- 最后一个命令实际上适用于我意外提交的dev文件,谢谢:)
- 为什么不缓存git rm-r?
- @ehsan看来,git rm --cached将导致删除其他机器上的本地副本,这些机器在下一次拉取时会签出相同的分支。请参阅arlocareon.com/blog/git/…,尤其是下面的讨论。
- 如果该文件是由构建生成的文件,那么这不是问题,是吗?我有一种情况,一个.chw文件(Windows帮助chm文件的某种索引)正在被跟踪,我可以推测是git rm -r --cached Help\foo.chw文件,对吗?尽管这可能会在另一个生成计算机上生成该文件,但它将在下一个生成时重新生成。
- 不适用于我,当我对文件进行更改时,它仍然添加到包含的更改中。我可以排除,但在某个时候,它可能会被意外地添加进来。
- 假设不变不是为了这个目的。可能要读取此线程
- 如果另一个dev modifies+提交其文件版本,将其推送到远程存储库,然后在文件上应用带有"--assume unchanged"标志的dev拉取这些更改,结果会是什么?文件是否从远程更新为最新更改,是否保持修改状态,或者是否由于现在的不同而产生冲突?
- @应该使用.git/info/exclude而不是将其用作"忽略机制"吗?
- 如果您想解压一个目录:stackoverflow.com/questions/12288212/…
以后你可以不跟踪你的文件
1
| git rm -r --cached <file> |
添加文件时
。
他们推或做你想做的事。
- 根据:git scm.com/book/en/v2/&hellip,这实际上是正确的答案。
- git rm --cached .DS_Store然后打印rm '../.DS_Store'并删除本地文件??!(git version 2.6.4 (Apple Git-63))
- 在这里得到答案stackoverflow.com/questions/6919121/&hellip;
- 这种方法比第一种方法对我更有效。
- 如果你已经把它签入了源代码呢?
- -r选项有什么作用?整个命令是否会取消更改并从repo或文件夹结构中删除文件?它是递归选项吗?
- -r标志递归地取消对索引的设置和移除;工作树保持不变。
- 这不是正确的答案,因为这将删除源中的文件。OP希望忽略该文件的本地更改,而不是完全删除对它的跟踪
- 我无法从源文件中删除这些文件,请演示如何删除。
但是,首先不应该提交已编译的二进制文件和外部依赖项。用像邦德勒这样的工具把它们拉进去。
- 不要忘记目录的-r选项(递归):git rm-r--cached
使用以下命令取消跟踪文件
1
| git rm --cached <file path> |
。
Git的书在第2.4节"撤销事情"中提到了这一点。基本上,您需要做的是将一些文件的索引状态重置回head状态,即最新签出(或提交)的状态。这将撤消将文件转移到当前索引的操作。此任务的命令是git reset〔1〕。
因此,您必须执行的命令是:
1
| git reset HEAD /path/to/file |
号
在执行git status时,较新版本的git(我相信从1.6左右开始)提供了这个命令(以及更多)。这些版本非常用户友好。个人提示:如果您只准备几个文件,请使用git add -i。这将启动交互式登台工具,使事情特别容易。另外,我强烈推荐阅读这本书,因为它非常明确地说明了在实际情况下使用Git。
[1]http://www.git-scm.com/book/本
- 我同意git reset 是最直接的文件解压方法。
- 撤消和取消跟踪是不同的事情
我假设您在询问如何删除build文件夹或bin文件夹中的所有文件,而不是分别选择每个文件。
您可以使用以下命令:
git rm -r -f /build\*
确保您在构建目录的父目录中。
这个命令将递归地"删除"bin/或build/文件夹中的所有文件。删除这个词的意思是Git会假装那些文件被"删除",而这些文件不会被跟踪。git确实将这些文件标记为处于删除模式。
确保您的.gitignore已准备好迎接即将到来的提交。
文件:Git Rm
不是原始问题的答案。但这可能对某人有所帮助。
查看您所做的更改(知道哪些文件标记为--假定不变)
结果文件列表的前缀为一个字符(例如:h或h)如果是小写(即h),则文件被标记为--假定不变
这对我有用
git reset head"文件名"
Git重置[文件]
将文件从临时区域返回到工作目录
我经常忘记将节点模块添加到.gitignore文件中,这就解决了这个问题。
删除所有未跟踪的文件。请尝试此终端命令
。
要删除未跟踪的文件和文件夹,请设置git clean-fdx