跨系统操作同一Git仓库,专属不同步子文件夹会被误删吗?
结论
你Windows设备本地的WindowsOnly/子文件夹和filea.bat不会被删除,只要你在Linux端提交时不把该文件的删除变更纳入提交即可。
原因说明
- Linux端
git status显示的deleted: WindowsOnly/filea.bat只是Git对比本地工作区和仓库历史记录得出的未暂存变更,该变更不会自动进入提交。 - 你在Linux端提交时,仅暂存Proj1目录下你修改的公共文件,最终生成的提交不会包含任何和
WindowsOnly/相关的删除记录,推送至远程后也不会携带这类删除操作。 - 后续Windows设备拉取代码时,只会同步提交中明确记录的变更,不会触碰提交未涉及的
WindowsOnly/目录下的文件。 - 仅当你不慎将
WindowsOnly/filea.bat的删除变更暂存、提交并推送后,Windows端拉取代码时才会触发本地对应文件的删除。
优化方案(消除冗余的删除提示)
你可以通过配置Git忽略规则彻底解决两端交叉识别平台专属目录删除的问题,操作步骤如下:
- 在仓库根目录新建
.gitignore文件,添加以下内容:
WindowsOnly/ LinuxOnly/
- 分别在两台设备执行对应命令,将已经入库的平台专属目录从Git追踪列表中移除(该操作不会删除本地实际文件):
Windows设备执行:
git rm --cached -r LinuxOnly/
Linux设备执行:git rm --cached -r WindowsOnly/
- 将
.gitignore文件和移除追踪的变更提交后推送到远程,之后两台设备执行git status都不会再出现对方平台专属目录的删除提示。
内容的提问来源于stack exchange,提问作者Tryer
相关产品推荐
相关产品推荐

