GIT - 关于文件处理

大家平时在使用GIT的时候,尤其是在Windows平台的时候,一般都不会特别留意跟文件相关的一些问题,比如说 文件权限,大小写问题。

这篇文章将给大家介绍在GIT使用中,关于文件处理的两个问题

文件权限

正常情况下,我们都不用太在乎,甚至不用理会GIT里面文件的权限是否可读,可写,可执行。但如果我们加进GIT的文件是一个可执行的文件,比如一个方便快捷部署的文件deploy.sh. 那么如果没有可执行权限的话,在Linux系统下面是无法执行的。

当我们新建一个deploy.sh文件,加到GIT里面,我们通过git ls-files -s可以看到文件是权限是644

D:\workspace\blog\demo (master -> origin)
λ git ls-files -s
100644 d37be9ba5c2dc1491460e7ce7d0bfdc1c4de6613 0       deploy.sh

这样的话,我们在Linux就不能直接执行这个deploy.sh的文件(当然我们可以在Linux强制修改文件的权限,但会导致后续的代码更新出错). 这时我们可以用git update-index --chmod=+x YOUR_FILE的命令,来修改文件的权限

D:\workspace\blog\demo (master -> origin)
λ git update-index --chmod=+x deploy.sh

D:\workspace\blog\demo (master -> origin)
λ git ls-files -s
100755 d37be9ba5c2dc1491460e7ce7d0bfdc1c4de6613 0       deploy.sh

D:\workspace\blog\demo (master -> origin)

这时大家就可以提交代码了,Linux环境下就可以执行这个deploy.sh文件了

Windows系统下文件名大小写重命名

如果大家的开发环境时Windows,而实际部署的环境时Linux的话,就有可能会遇到这个问题:

你一开始给某个文件夹起名为 demofolder,里面有个文件httpUtil.js提供get的方法。 过几天大家一起codereview的时候,这个名字被大家吐槽要用驼峰,所以你回来之后就想着给这个名字重命名为demoFolder, 中间的==F==变大写。 于是你就在Windows的目录中,把文件夹名字改名为demoFolder, 然后就准备提交代码。 结果发现git status没有任何代码变更,commit不了!

这是怎么回事呢?

这是因为GIT默认忽略大小写,git config core.ignorecase 这个值默认为true

D:\workspace\blog\gitdou (master -> origin) (gitdou@0.1.0)
λ git config core.ignorecase
true

我们可以简单地通过git config core.ignorecase false命令把忽略大小写关掉。但是二牛不建议这样做,尤其是在Windows环境下,容易遇到合并分支时由于大小写问题而出现冲突。 建议采用重命名的方式来实现改名。

GIT有个mv的命令来实现文件的重命名. 比如把demofolder改成demoFolder1, 我们可以用git mv demoFolder demoFolder1来实现。但是不能只是改为大小写

D:\workspace\build_your_own_x\gitdou (master -> origin) (gitdou@0.1.0)
λ git mv demoFolder demofolder
Rename from 'demoFolder' to 'demofolder/demoFolder' failed. Should I try again? (y/n) n

原因前面已经说了,GIT默认是忽略大小写的。所以我们可以来个曲线救国,先rename成其它名字,再改回来就可以了

D:\workspace\build_your_own_x\gitdou (master -> origin) (gitdou@0.1.0)
λ dir
 Volume in drive D is DATA
 Volume Serial Number is 086F-F062

 Directory of D:\workspace\build_your_own_x\gitdou

01/10/2019  05:34 PM    <DIR>          .
01/10/2019  05:34 PM    <DIR>          ..
06/28/2018  04:41 PM                66 .gitattributes
07/18/2018  08:20 AM               935 .gitignore
01/10/2019  03:25 PM    <DIR>          demofolder
06/28/2018  04:41 PM             1,070 LICENSE
06/29/2018  09:19 AM    <DIR>          node_modules
06/29/2018  10:04 AM               561 package.json
06/28/2018  04:57 PM               102 README.md
01/10/2019  03:29 PM    <DIR>          src
06/29/2018  10:03 AM    <DIR>          test
               5 File(s)          2,734 bytes
               6 Dir(s)  12,081,958,912 bytes free

D:\workspace\build_your_own_x\gitdou (master -> origin) (gitdou@0.1.0)
λ git mv demofolder demoFolder1

D:\workspace\build_your_own_x\gitdou (master -> origin) (gitdou@0.1.0)
λ git mv demoFolder1 demoFolder

D:\workspace\build_your_own_x\gitdou (master -> origin) (gitdou@0.1.0)
λ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

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

        renamed:    demofolder/httpUtil.js -> demoFolder/httpUtil.js

以上就是关于GIT文件操作的两个问题以及对应的解决方案,希望能在你需要的时候提供一点思路!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,718评论 0 10
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,480评论 0 16
  • linux基础命令findfind / -name targetfilename 查找文件按时间查找也有参数 -a...
    AQ王浩阅读 1,469评论 0 5
  • 有一种人,好似大海般壮阔,包容所有,温柔对待所遇到的一切,不拒绝,不挽留,若即若离。 可是一定有一个人是最特别的,...
    夕颜玉阅读 1,300评论 0 1
  • 今天我读到一句话,感受很深,他是这样说的:年轻人,不去创业,不去旅游,不去接受新事物,不去给身边的人带去正能量,整...
    hjfryan阅读 343评论 0 0