如何将本地解决方案关联的共享服务器文件纳入Git版本控制
Ektron架构下TFS迁移Git落地方案
问题根因说明
- 跨目录无法追踪:Git仅能追踪仓库根目录范围内的文件,本地存解决方案、WEBDEV服务器存代码的异构路径,天然超出Git的追踪范围
- 手动同步成本高:未将WEBDEV的实际运行目录作为Git工作树,靠本地副本和服务器双向拷贝的方式必然产生大量冗余操作
- "文件已存在无法添加"报错:多为之前初始化Git失败残留的索引冲突、暂存区异常、或锁文件未清理导致
- 假Git进程占用提示:Git操作异常退出后,
.git目录下的index.lock文件未自动删除,会持续提示有进程运行,删除锁文件即可恢复
可直接落地的实施方案
整套方案无需逐文件执行命令,同时兼容本地VS操作、服务器文件直接运行的要求,不需要全量拷贝数千个CMS文件到本地。
1. 统一仓库初始化位置
直接在WEBDEV服务器的站点根目录初始化Git仓库,从根源解决跨路径问题:
- 先清理残留异常文件,在WEBDEV站点根目录执行以下命令:
:: 删除残留锁文件,解决假进程占用问题 del /s /q .git\index.lock :: 清理之前初始化失败残留的Git配置,解决文件添加报错 rd /s /q .git
- 执行
git init完成仓库初始化 - 将本地存放的
.sln解决方案文件、.csproj/.vbproj等项目文件,全部移动到WEBDEV服务器的Git仓库根目录下,本地通过SMB共享/网络映射盘的方式,直接用Visual Studio打开WEBDEV上的解决方案文件,不需要在本地保留任何代码副本。
2. 自动过滤无需管控的文件
在仓库根目录新建.gitignore文件,通过规则自动跳过数千个不需要版本管控的Ektron CMS核心文件、临时文件,执行批量添加时只会纳入需要追踪的数百个开发文件,无需逐文件操作。参考配置如下:
# 忽略Ektron CMS核心系统文件 /Workarea/ /bin/Ektron.* /App_Data/ektron/ # 忽略日志、临时文件、用户上传资源 *.log /App_Data/Temp/ /Uploads/ /App_Data/cache/ # 放行需要追踪的自定义开发文件、解决方案文件 !/CustomCode/ !/Views/custom/ !/StaticAssets/custom/ !*.sln !*.csproj !web.config
配置完成后执行git add .,Git会自动按照规则筛选需要追踪的文件,直接提交即可。
3. 本地操作适配
将WEBDEV的站点根目录映射为本地网络盘符(例如Z盘),本地安装的Git客户端、Visual Studio Git插件可以直接识别该盘符下的仓库,所有提交、拉取、对比操作直接在本地完成,修改的文件实时存放在WEBDEV服务器上,完全不需要手动同步拷贝。
4. TFS历史迁移(可选)
如果需要保留TFS上的历史变更记录,可使用git-tfs工具将TFS对应路径的提交记录拉取到WEBDEV上初始化好的Git仓库中,迁移完成后在VS中切换源控制提供程序为Git即可。
落地注意事项
- Git无原生独占签出机制,团队可通过服务端路径权限配置、开发前提前同步模块分工的方式规避文件冲突
- 生产服务器WEBPRD不要直接初始化Git仓库或执行pull操作,保留原有发布流程,将WEBDEV上验证通过的版本打包后同步到生产,避免
.git目录泄露造成安全风险 - 如果网络映射盘下Git操作速度慢,可在仓库目录执行
git config core.fscache true开启文件系统缓存,大幅提升操作响应速度
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

