我正在与远程回购合作项目。 repo中的一个源文件是一个“配置”类型的文件,我想维护我自己的文件本地副本,该副本与远程文件不同,没有git查看该文件。也就是说,我不希望git跟踪文件;如果我使用opendir
,我不希望它被提交;当我使用git commit -a
到遥控器时,我绝对不希望它被推动。我也不想从远程仓库中删除它,因此git push
会出错。
有几个地方(包括StackOverflow上的一个地方)建议使用git rm --cached
。这似乎有效;如果我使用git update-index --assume-unchanged <config-file>
,则该文件未列为已修改,git status
不会尝试提交该文件。但是,git仍然阻止我在“master”和我的工作分支之间本地切换分支。如果我尝试git commit -a
从工作分支转到主分支,反之亦然,我得到
git checkout master
error: Your local changes to the following files would be overwritten by checkout:
<config-file>
Please, commit your changes or stash them before you can switch branches.
无效:
git checkout -f
似乎要切换分支,我必须重命名文件,使用error: Entry '<config-file>' not uptodate. Cannot merge.
,然后每次切换时重命名。这是不可接受的。每次我想切换分支时都没有使用像git checkout
这样的其他命令,这是我需要做的事情。
该文件已列在我的git stash
。
如何让git完全忽略我的文件?
答案 0 :(得分:1)
我说这个问题不在工具中,而是在这个过程中。在部署一些应用程序之前我不得不处理这个问题并认为解决方案是这样的:
将您的config
文件移至config.sample
确保您的部署/安装将config.sample
复制为config
(如果不存在)
根本不要将config
添加到git中 - 不需要跟踪它
将config
保留在.gitignore
中,以便将来不会意外发生