切换分支而不更改本地忽略的文件

时间:2018-10-10 14:22:07

标签: git

我有一些文件需要与客户端存储库在登台服务器上具有不同的文件。例如,.htaccess文件。

我不希望跟踪本地修改的文件,所以我将其添加到.git/info/exclude

然后我跑了git update-index --assume-unchanged .htaccess(我也尝试过--skip-worktree

但是现在当我尝试切换分支git checkout myotherbranch时,我收到此消息:

  

错误:您对以下文件的本地更改将被覆盖   通过结帐:           .htaccess在切换分支之前,请先提交更改或存储更改。中止

但是因为我忽略了文件,所以无法将其保存。

实际上我在本地忽略了许多文件,为简单起见,我只是将示例简化为一个文件。

我认为问题在于我要切换到的分支与当前分支具有不同的.htaccess文件版本。

在本地忽略文件的情况下,是否可以切换到该分支?

编辑以进行投票:请阅读我的问题。从存储库中删除文件不是答案。我在本地忽略文件,因此它与主存储库无关。这将影响主仓库。我只希望它在本地被排除,并具有更改分支的能力。

2 个答案:

答案 0 :(得分:0)

如果您希望忽略这些文件,则应使用.gitignore文件,问题是,如果您已经在git历史记录中跟踪了这些文件,则需要使用以下方法使git忘记它们:

git rm --cached <file>

答案 1 :(得分:0)

您可能已经确定了问题,另一个分支中已经存在一个.htaccess。

Git需要了解更改:

git update-index --no-assume-unchanged .htaccess 

存储这些更改:

git stash save "Save local conf"

您现在可以在其他分支结帐:

git checkout myotherbranch

最后,您可以恢复本地更改:

git stash pop

最后,我将使用--skip-worktree保护文件。为什么? See here