.DS_Store文件跟git冲突处理

一、什么是.DS_Store

答:.DS_Store是由苹果公司的Mac OS操作系统所创造的隐藏文件(相当于保存文件夹的自定义属性的隐藏文件),目的在于存贮目录的自定义属性,例如文件的图标位置或者是背景色,相当于Windows的desktop.ini。

二、什么情况出现

答:做项目时,每次打开项目文件(未修改)或则修改项目后都会提示该文件已修改(与git冲突,无法正常下拉、上传代码),原因,其他项目成员自带的.DS_Store提交到了服务器

三、解决过程

1.使用SourceTree工具,放弃工作副本中.DS_Store文件(无效-未解决)

.DS_Store致命:
无法创建/用户/XXX /XXX /.git/index.lock':文件存在。如果没有其他git当前正在运行的进程,这可能意味着git过程坠毁在这个存储库。确保没有其他git过程是手动继续运行和删除文件。
完成与错误,见上图

2.进入项目文件,使用终端删除.DS_Store文件,git版本工具SourceTree仍然无法进行代码的拉取和上传,如上图。(未解决)

3.从远程URL新建本地仓库(舍弃原有无法拉取的仓库),新仓库打开文件夹后SourceTree提示.DS_Store已修改,可通过工作副本放弃该文件(缺点是打开文件都会出现,每次都需要手动取消该文件的修改)(解决一半)

4.终端进入新的本地仓库,删除.DS_Store文件,再次打开则不会再次出现【删除后SourceTree工具会显示删除的所有.DS_Store文件,将删除文件提交push】(解决)

 

 

四、删除会有副作用吗

答:删除以后的副作用是这些信息的失去。(当然,这点副作用其实不是太大)--不会影响该文件夹下项目的正常运行

五、终端删除.DS_Store文件

打开 “终端” ,cd到你想要删除.DS_Store的文件夹:复制黏贴下面的命令,回车执行,重启Mac即可生效。

sudo find ./ -name ".DS_Store" -depth -exec rm {} ; 

六、禁止.DS_Store生成

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

七、恢复.DS_Store生成

defaults delete com.apple.desktopservices DSDontWriteNetworkStores

 Ts:

  和别人交换文件(或你做的网页需要上传的时候)应该把 .DS_Store 文件删除比较妥当,因为里面包含了一些你不一定希望别人看见的信息(尤其是网站,通过 .DS_Store 可以知道这个目录里面所有文件的清单,很多时候这是一个不希望出现的问题)

Ts: 

// cd到你想要删除的文件夹,输入终端命令
ls -al

即可查看该文件夹下所以文件,包括隐藏文件(例如.DS_Store),隐藏文件前带黑点,正常文件不带黑点,如下

原文地址:https://www.cnblogs.com/cdj61/p/13025794.html