我不小心将第三方库添加到我的仓库中并将更改推送到实时服务器,这是一个带有post-receive挂钩的裸仓库,将主分支检出到webroot。
我想停止跟踪本地仓库中的文件,将它们添加到.gitignore,然后将我的更改推送到实时服务器,而不删除实时服务器中的文件。我仍然需要在实时服务器上使用该库,而不是由版本控制管理。我希望能够对实时服务器上的库进行更改(除了所有最佳实践),而不会在每次推送时都被git repo中的版本覆盖。
这可能吗?我已经尝试过使用其他回购套件并且它总是被删除。
答案 0 :(得分:0)
.gitignore文件将完全忽略该文件 - 因此不会被跟踪,也不会成为存储库的一部分。您可以使用带有--assume-unchanged
标记的git-update-index
忽略对跟踪文件的更改。
git update-index --assume-unchanged <path>
--assume-unchanged
参数允许您在本地进行更改,而无需检入或推送它们。但是,这不会阻止文件被结帐覆盖。为了防止这种情况,您应该使用以下标志。
git update-index --skip-worktree <path>
其中任何一个都只会影响本地存储库。假设路径保持不变或者应该跳过它的事实不能被推送到任何远程 - 将其视为本地配置。
但是,正如我经常对这些事情所说的那样,真正的答案是停止使用git作为部署工具。有很多工具可以处理部署,而不是git。 (卡皮斯特拉诺,phing,蚂蚁等......)