git reset --hard似乎忽略.git/info/exclude

Jon*_*rtz 4 git

我们有一个共享目录(调用它/共享),我们通过我们的主git分支自动更新,只要有一个push to master就运行这些命令:

   git reset --hard HEAD
   git clean -f -d
   git pull

这在很大程度上起作用.然而,即使在git中检查了"media"符号链接,我们也不希望触及目录/共享/媒体.

我已将"media"添加到.git/info/exclude中,但无论如何,"git reset --hard HEAD"会删除/ shared/media并将其替换为已签入的符号链接.

有没有办法让"git reset --hard HEAD"单独留下这个目录,除了事先将它移开并在之后恢复它?

Rus*_*vis 7

git update-index --skip-worktree <file>应该做的伎俩(见类似的问题: git update-index --assume-unchanged和git reset)


CB *_*ley 1

您不能忽略 git 存储库中存储有实际内容的路径。Git 将尊重对跟踪树的更改。忽略仅影响开始跟踪新内容的尝试,需要add -f实际存储新内容。

.gitignore但是,如果您通过配置忽略带有、.git/info/exclude或 的路径,则这仍然成立core.excludesfile

如果您不希望通过硬重置删除媒体目录,则需要从存储库中删除冲突的路径。除了显式重置其他路径之外,没有其他解决方法。