美文网首页初见
在终端 忽略 .DS_Store

在终端 忽略 .DS_Store

作者: 书写不简单 | 来源:发表于2019-04-03 11:53 被阅读0次

    最近一直忙于新项目,也是一个人在搞,时间紧任务重!所以在使用Git对源码进行提交过程中出现的各种问题也没有来得及整理,项目接近尾声,对个人认为“最烦人”的问题梳理一下解决流程。

    先看问题截图:


    issue.png

    1.什么是.DS_Store?

    .DS_Store,用于存储当前文件夹的一些Meta信息。每次提交代码时,我都要在代码仓库的.gitignore中声明,忽略这类文件。

    解决方案有很多,在此只介绍一种简单不失文雅的解决方案:

    配置全局的.gitignore

    问题1:去哪里找这个.gitignore ?      
    问题2:找到怎么配置?       
    问题3:配置之后一定有效果吗?
    

    解决以上三个问题,我们的上述报错问题也就迎刃而解了!

    • 问题1:去哪里找这个.gitignore ?

    .gitignore 文件路径是在用户下面的,如果没有,找到用户这个目录,在下面创建一个 该文件:


    path1.png

    如果没有,可以在终端里面 cd 到当前目录,然后创建一个文件,创建方法如下:

    touch .gitignore
    
    • 问题2:找到怎么配置?

    1、在对我们创建号的 .gitignore文件进行配置之前,我们还需要做一步操作:创建一个 .gitignore_global 文件,路径与上述的路径一致,方法如下:

    touch .gitignore_global
    

    在上面的图中也可以看到这个文件已经创建了。

    2、创建好以后,用文本编辑打开这个文件,把需要全局忽略的文件类型塞到这个文件里:

    # .gitignore_global
    ####################################
    ######## OS generated files ########
    ####################################
    .DS_Store
    .DS_Store?
    *.swp
    ._*
    .Spotlight-V100
    .Trashes
    Icon?
    ehthumbs.db
    Thumbs.db
    ####################################
    ############# packages #############
    ####################################
    *.7z  
    *.dmg
    *.gz
    *.iso
    *.jar
    *.rar
    *.tar
    *.zip
    

    如下图:

    gitignore_global.png

    3、在~/.gitconfig中引入.gitignore_global

    [user]
        name = 你的账户名字
        email = 你的邮箱
    [push]
    default = matching
    
    [core]
    excludesfile =/Users/YooGo/.gitignore_global
    
    • 问题3:配置之后一定有效果吗?

    通过以上两部的解决,只能说成功了 50% 。。。。。

    如果在刚开始起步(在第一次次push之前)就做了上述操作的话,那就能成功。如果忘记配置那么到后期远程仓库就会跟踪你的.DS_Store,那么你就总会出现这种情况了;

    error: Your local changes to the following files would be overwritten by merge: .DS_Store
    或:
    both modified: .DS_Store
    如果开始的时候忘记配置了忽略文件,可以通过下面的命令进行配置:

    git rm -r --cached .DS_Store
    

    经过以上3步操作,应该可以解决问题了。

    下面给出.gitignore的格式规范:

    • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
    • 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
    • 星号(*)匹配零个或多个任意字符;
    • [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
    • 问号(?)只匹配一个任意字符;
    • 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字).
    
    

    相关文章

      网友评论

        本文标题:在终端 忽略 .DS_Store

        本文链接:https://www.haomeiwen.com/subject/kgeabqtx.html