我有一些文件需要与客户端存储库在登台服务器上具有不同的文件。例如,.htaccess文件。
我不希望跟踪本地修改的文件,所以我将其添加到.git/info/exclude
然后我跑了git update-index --assume-unchanged .htaccess
(我也尝试过--skip-worktree
)
但是现在当我尝试切换分支git checkout myotherbranch
时,我收到此消息:
错误:您对以下文件的本地更改将被覆盖 通过结帐: .htaccess在切换分支之前,请先提交更改或存储更改。中止
但是因为我忽略了文件,所以无法将其保存。
实际上我在本地忽略了许多文件,为简单起见,我只是将示例简化为一个文件。
我认为问题在于我要切换到的分支与当前分支具有不同的.htaccess文件版本。
在本地忽略文件的情况下,是否可以切换到该分支?
编辑以进行投票:请阅读我的问题。从存储库中删除文件不是答案。我在本地忽略文件,因此它与主存储库无关。这将影响主仓库。我只希望它在本地被排除,并具有更改分支的能力。
答案 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