2024-04-19 22:14:51 发布
网友
有一个文件正在被git跟踪,但现在该文件在.gitignore列表中。
git
.gitignore
但是,该文件在编辑后会一直显示在git status中。你如何强迫git完全忘记它?
git status
git update index为我做这项工作:
git update-index --assume-unchanged <file>
注意:此解决方案实际上独立于.gitignore,因为gitignore仅用于未跟踪的文件。
编辑:自发布此答复后,已创建了一个新选项,应首选该选项。您应该使用--skip-worktree来检查用户不想再提交的已修改的跟踪文件,并保留--assume-unchanged以提高性能,以防止git检查大型跟踪文件的状态。有关详细信息,请参见https://stackoverflow.com/a/13631525/717372。。。
--skip-worktree
--assume-unchanged
git update-index --skip-worktree <file>
下面的一系列命令将从Git索引(而不是从工作目录或本地repo)中删除所有项,然后更新Git索引,同时忽略Git。PS.Index=缓存
首先:
git rm -r --cached . git add .
然后:
git commit -am "Remove ignored files"
或一行:
git rm -r --cached . && git add . && git commit -am "Remove ignored files"
.gitignore将阻止未跟踪的文件被添加(没有add -f)到git跟踪的文件集中,但是git将继续跟踪任何已经被跟踪的文件。
add -f
要停止跟踪文件,需要将其从索引中删除。这可以通过这个命令来实现。
git rm --cached <file>
如果要删除整个文件夹,则需要递归删除其中的所有文件。
git rm -r --cached <folder>
下一次提交时将从head revision中删除文件。
警告:虽然这不会从本地删除物理文件,但它将从下一个git pull上的其他开发人员计算机中删除这些文件。
git pull
git update index为我做这项工作:
注意:此解决方案实际上独立于
.gitignore
,因为gitignore仅用于未跟踪的文件。编辑:自发布此答复后,已创建了一个新选项,应首选该选项。您应该使用
--skip-worktree
来检查用户不想再提交的已修改的跟踪文件,并保留--assume-unchanged
以提高性能,以防止git检查大型跟踪文件的状态。有关详细信息,请参见https://stackoverflow.com/a/13631525/717372。。。下面的一系列命令将从Git索引(而不是从工作目录或本地repo)中删除所有项,然后更新Git索引,同时忽略Git。PS.Index=缓存
首先:
然后:
或一行:
.gitignore
将阻止未跟踪的文件被添加(没有add -f
)到git跟踪的文件集中,但是git将继续跟踪任何已经被跟踪的文件。要停止跟踪文件,需要将其从索引中删除。这可以通过这个命令来实现。
如果要删除整个文件夹,则需要递归删除其中的所有文件。
下一次提交时将从head revision中删除文件。
警告:虽然这不会从本地删除物理文件,但它将从下一个
git pull
上的其他开发人员计算机中删除这些文件。相关问题 更多 >
编程相关推荐