我在本地机器上设置了Git。在初始化Git时,我添加了预编译的库和二进制文件。然而,在我的开发过程中,我不想时断时续地检查这些文件。我不想从仓库中删除这些文件。是否有任何方法可以在完成开发之前暂时停止跟踪这些文件。(我认为我不能使用.gitignore,因为它只适用于那些没有被Git跟踪的文件。我想临时禁用文件的跟踪。)
我在本地机器上设置了Git。在初始化Git时,我添加了预编译的库和二进制文件。然而,在我的开发过程中,我不想时断时续地检查这些文件。我不想从仓库中删除这些文件。是否有任何方法可以在完成开发之前暂时停止跟踪这些文件。(我认为我不能使用.gitignore,因为它只适用于那些没有被Git跟踪的文件。我想临时禁用文件的跟踪。)
git update-index 可以满足你的需求。
这将告诉 git 你希望开始忽略文件的更改:
git update-index --assume-unchanged path/to/file
当你想再次跟踪时:
git update-index --no-assume-unchanged path/to/file
git rm --cached
会导致其他机器上的本地副本被删除,这些机器上检出了相同的分支,并在下一次拉取时执行。请参阅http://www.arlocarreon.com/blog/git/untrack-files-in-git-repos-without-deleting-them/,特别是其下面的讨论。 - mit之后,您可以将文件保持未被跟踪状态
git rm -r --cached <file>
使用以下方式添加您的文件
git add -u
他们推动或者做任何你想要的事情。
git rm --cached .DS_Store
然后它会打印出 rm '../.DS_Store'
,这个本地文件就被删除了?! (git version 2.6.4 (Apple Git-63)
) - Weishi Zgit rm --cached
然而,你不应该在第一次提交时将编译后的二进制文件和外部依赖项提交。相反,使用像Bundler这样的工具来拉取它们。
使用以下命令取消跟踪文件
git rm --cached <file path>
这并不是对原问题的回答,但可能会对某些人有所帮助。
要查看您所做的更改(了解标记为--assume-unchanged的文件)
git ls-files -v
生成的文件列表将有一个带有一个字符前缀(例如:H或h)。 如果是小写字母(即h),则该文件被标记为--assume-unchanged。
git ls-files -v | grep "^h "
可以查看所有被 --assume-unchanged
的文件。 - ZX9powershell "git ls-files -v |? {$_ -cmatch '^h '}"
应该能解决问题。 - ZX9git reset
。因此,你需要执行以下命令:git reset HEAD /path/to/file
git status
时会给出此命令(以及许多其他命令)作为提示。这些版本非常用户友好。个人建议:如果您只是暂存几个文件,请使用git add -i
。这将启动交互式暂存工具,使事情特别容易。此外,我强烈推荐阅读该书,因为它非常明确地介绍了git在实际情况下的使用。git reset [file]
是取消暂存文件最直接的方式。 - user2558887git reset
不会撤销对文件的更改。它将取消跟踪该文件,但保留更改。 - mdzekogit rm -r -f /build\*
assume-unchanged
的方法是 skip-worktree
。后者具有不同的含义,类似于“Git 不应跟踪此文件。开发人员可以自由修改并鼓励进行本地更改。”assume-unchanged
是一个不错的选择。skip-worktree
更适合。BuildConfig.Default.cfg
。预期开发人员将本地重命名为 BuildConfig.cfg
并对其进行任何本地更改。现在将 BuildConfig.cfg
添加到 .gitignore
中,以便文件不会被跟踪。要删除所有未跟踪的文件,请尝试这个终端命令。
git clean -fdx
运行
git rm -r --cached file_to_git_ignore
然后进入你的 gitignore
文件
并添加 path_to_file_to_git_ignore
祝你好运