Git基本操作_4

文件权限问题

  • Git 在进行版本管理的时候,默认将文件权限也包含在内,但很多时候,可能并不需要让文件权限保持一致。比如当自己的代码发布到生产服务器中,然后修改了某个文件的权限,再次拉取代码时,如果这个文件正好有代码修改,这个时候 Git 就会提示文件冲突。

  • 在 Git 进行代码管理时,如果不想让 Git 记录文件权限,可以通过 Git 配置让其忽略文件权限的信息,参考命令如下:

    #当前版本库
    git config core.filemode false
    

    如果你想让你电脑上所有的版本库,都忽略文件权限,可以在命令中加入--global,参考命令如下所示:

    git config --global core.fileMode false
    

    当上面的命令被执行之后,就设置了忽略文件权限,此时通过cat查看配置文件.git/config,参考命令如下:

    cat .git/config
    

    在配置文件中,如果看到fileMode false则代表配置成功,如下图所示:

    image-20200330184531284

忽略指定的文件或者目录

  • 在平时工作中可能需要把一些文件放到 Git 工作目录中,但又不想把他们提交到版本控制器里面,比如说,项目的配置文件、IDE 自己产生的目录文件等等。
  • 这种需求其实非常常见,因此Git本身也提供了忽略某些文件的功能,解决起来相对比较简单;我们可以在在Git工作区的根目录下创建一个.gitignore文件,把想忽略的文件名或者目录填进去,每个文件占用一行,Git 就会自动忽略这些文件,如下图所示:

image-20200330185221514

  • 常见问题:

    • 无法添加.gitignore

      在 Windows 系统中因为文件命名的规则是 . 之前必须要有字符,所以如果直接在资源管理器里新建一个 .gitignore文件,系统会提示必须输入文件名;这个时候,就可以通过一些第三方的文本编辑器[vscode,sublimtext,notpad++等]新建一个文本文件,然后通过“保存”或者“另存为”就可以把文件保存为 .gitignore

    • 通配符问题

      .gitignore 文件支持通配符,如果在文件中添加一些忽略规则之后,可能会由于匹配过于宽松,导致某一个文件无法提交到 git 。可以用git check-ignore命令检查:

      $ git check-ignore -v 文件名
      

      如果确实想添加某个文件,可以用 -f 强制添加到 Git:

      git add -f [文件名]
      
  • 设置忽略排除

    • 忽略文件夹内容

      可以在.gitignore文件中添加类似这样的内容[目录名]/*表示忽略该目录下的所有文件,如下图所示:

      image-20200401192759283

    • 设置反向排除

      如果想要反向排除忽略目录下的某个文件,可以在.gitignore文件中添加类似这样的内容![目录名]/[文件名]表示忽略该目录下的某个文件,如下图所示:

    • 忽略已经存在的文件或文件夹

      有的时候,可能一不小心把某一个原本应该忽略的文件或者目录提交到了版本控制器中,再使用 .gitignore 文件去忽略它的时候,发现无论如何都无法再次将其忽略,这是因为Git已经索引了该文件或目录而导致,这时可以采取这样的办法:

      1. 现在.gitignore文件中添加对文件或目录的忽略,如上;

      2. 之后删除对要忽略的文件或者目录的缓存,命令参考如下:

        #删除文件的缓存
        git rm --cached [目录名]/[文件名]
        #删除目录的缓存
        git rm --cached [目录名]
        
      3. 接着需要将此修改提交,因为在忽略文件里已经设置过了,所以在提交的时候需要注意加上-f参数,表示强制添加。

posted @ 2020-03-31 11:18  依吁的回忆  阅读(134)  评论(0)    收藏  举报