相关疑难解决方法(0)

使用gitignore忽略(但不删除)文件

我在我的git repo中有一个tmp目录我想仍然存在,但是被忽略了.我添加了它.gitignore,但git status仍然告诉我有关该目录中文件的更改.我试过了git rm -r --cached,但是它将它从远程仓库中删除了.如何停止跟踪对此目录的更改,但仍然允许它存在?我还需要1个文件做到这一点,但变化是,在也出现git status之后.gitignore荷兰国际集团他们.我该怎么办?

git version-control

95
推荐指数
4
解决办法
4万
查看次数

git ignore vs. exclude vs. assume-unchanged

我已经多次阅读过这方面的文档了,我仍然没有完全理解这些不同命令之间的差异.也许这只是我,但文档可能更清晰:

http://git-scm.com/docs/gitignore

https://help.github.com/articles/ignoring-files

此外,很多关于这个主题的评论似乎使用了"索引","承诺","跟踪"等词语,有些松散,这使得这三者之间的差异不那么明显.

我当前(公认有限)的理解:

  • 匹配的文件.gitignore将来不会被跟踪.(虽然它们之前可能已被跟踪过.)这意味着它们将不会在未来的git status列表中显示为已更改. 但是,未来的更改仍将与远程回购同步.换句话说,文件仍然是"索引"的,但它们没有被"跟踪".由于.gitignore文件位于项目目录中,因此可以对文件本身进行版本控制.

  • 匹配的文件.git/info/exclude也不会被"跟踪".此外,这些文件永远不会被远程同步,因此永远不会被任何其他用户以任何形式看到.这些文件应该是特定于单个用户的编辑器或工作流的文件.因为它在.git 目录中,所以exclude文件本身不能进行版本控制.

  • 已在其上assume-unchanged运行的文件也不会显示在git status或中git diff.这看起来很相似exclude,因为这些文件既没有"索引"也没有"跟踪".但是,之前要提交的文件的最后一个版本assume-unchanged对于repo中的所有用户仍然可见.

我的问题:

  1. 以上解释是否正确?请指正.

  2. 如果文件已经在提交中,那么在匹配.exclude和运行文件 之间的功能有何不同assume-unchanged?为什么一个人更喜欢另一种方法?

  3. 我的基本用例是我想避免在编译文件中对差异进行排序,但我仍然希望这些编译文件与源文件一起同步.将一个gitignore"d文件仍然推?如果没有,如何管理编译文件的最终部署?

在此先感谢您的帮助.

git gitignore

61
推荐指数
3
解决办法
2万
查看次数

标签 统计

git ×2

gitignore ×1

version-control ×1