文档章节

Git 记录文件权限变更

dingdayu
 dingdayu
发布于 01/02 16:57
字数 591
阅读 21
收藏 0
Git

在编写 Dockerfile 时,遇到过几次文件权限的问题,每次都需要查询,总是记不住,整理一篇文章记录在这里。

查看文件权限

git ls-tree HEAD

可以查看当前 HEAD 指针所指版本中所跟踪的文件权限列表:

$ git ls-tree HEAD
100644 blob ad46b30886fa350c1f59761b100e5e4b01f9a7ec    .gitignore
100644 blob d3fa69c361cafb45d84c093c1de80c60df6fe73c    Dockerfile
100644 blob 261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64    LICENSE
100644 blob 4e0131b7651a9c7da668b35fd4a80b4c36966ce8    README.md
100644 blob 0d6e13f66de19c906aad7c219f07a7a86ccfc55a    docker-compose.yml
100644 blob 20d23117c700e59f1793dd2fddecfa9bdb01085f    entrypoint.sh
040000 tree 7bf219dd6874e144f7801fe4ba4e9e5655ad9c4e    yapi

修改文件权限

Git 版本记录中,关于文件权限部分,由于在不同的系统中的各种特性,Git 仅记录了文件的执行权限,也就是不记录 文件所有者和所属组的变更。

LinuxMac 中,可以很方便的对文件权限进行变更,和追踪:

chmod +x entrypoint.sh

然后 git status 进行变更查看,再 git add entrypoint.shgit commit -m "update entrypoint.sh permission"

但是,再 Win 中,变更文件执行权限,需要通过 git update-index --chmod 来实现变更,具体步骤如下:

$ git update-index --chmod=+x entrypoint.sh

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   entrypoint.sh

$ git add entrypoint.sh

$ git commit -m "fix entrypoint.sh permission"
[master f50b894] fix entrypoint.sh permission
 1 file changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 entrypoint.sh

$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 237 bytes | 237.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:registrys/yapi.git
   ac5722e..f50b894  master -> master

此时,再查看文件权限:

$ git ls-tree HEAD
100644 blob ad46b30886fa350c1f59761b100e5e4b01f9a7ec    .gitignore
100644 blob d3fa69c361cafb45d84c093c1de80c60df6fe73c    Dockerfile
100644 blob 261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64    LICENSE
100644 blob 4e0131b7651a9c7da668b35fd4a80b4c36966ce8    README.md
100644 blob 0d6e13f66de19c906aad7c219f07a7a86ccfc55a    docker-compose.yml
100755 blob 20d23117c700e59f1793dd2fddecfa9bdb01085f    entrypoint.sh
040000 tree 7bf219dd6874e144f7801fe4ba4e9e5655ad9c4e    yapi

Github变更如下:

忽略文件权限

但是,有很多时候我们并不需要过多关注文件权限,特别是部署时会重置文件权限的情况,在开发时由于各环境不同,总是有文件权限的冲突,此时,我们可以忽略文件变更追踪。

git config core.filemode false

可以禁止 Git 跟踪文件权限。

© 著作权归作者所有

dingdayu

dingdayu

粉丝 34
博文 119
码字总数 59598
作品 3
海淀
后端工程师
私信 提问
大话说github for linux客户端基本操作(一)之下载和提交项目

首先准备linux环境确保网络处于联通状态,下载github客户端 yum install git #下载github客户端 我们输入y确定安装 我们再输入git的帮助命令 git --help 现在git环境就安装好了。 此时我们进...

hillsowl
2016/03/14
424
0
Git由浅入深之基本原理

来源:Git由浅入深之基本原理 作者:惊鸿三世 万丈高楼平地起,万事只有打好基础,才能有所成就,学习亦是一样。本篇开始介绍Git基础工作理论,学完本篇,我们应该知道什么是Git,Git是如何工...

极乐君
2017/02/24
0
0
GitHub 增强使用工具--Starred

利用GitHub上喜欢(star)的项目生成类 awesome 列表的汇总页面。便于归档、和记录star变更。 项目地址:https://github.com/maguowei/starred 效果示例: https://github.com/maguowei/awes...

血荐轩辕
2016/08/01
2.9K
2
ubuntu14.10server搭建git服务器成功记录

安装配置git 安装git和openssh。在当前用户下执行如下命令安装git和openssh: git-core是git版本控制核心软件 安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户...

包子的账号
2015/08/21
1K
0
g4e基础篇#7 了解拉取请求 Pull Request

拉取请求是Git中特有的工作方式,可以帮助团队更好的控制代码质量,集成自动化构建和部署,创建更好的协作氛围。要理解拉取请求是如何做到这些的,我们首先需要了解什么是拉取请求。 什么是拉...

leixu
2018/04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
446
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
4
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
3
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
21
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部