未整理,git相关

有可能出现这种情况,我们从git仓库拷贝到本地之后,修改了本地这些拷贝的文件权限,然后push到远程仓库。这时候,远程仓库的项目文件权限也会发生改变,因为git默认把文件权限也纳入版本控制,所以不要以为本地权限的变更不会影响远程仓库。
解决办法是:
先备份当前代码到本地一个新的目录A,选取一个最近的权限正确的版本号,记录下该版本之后每次commit发生改变的文件到记事本
git reset --hard 版本号
回退到权限正确的时候的版本,然后根据记事本上记录的发送变动的文件,用A目录下的这些文件直接替换(overrite,不要只是替换文件内容,直接用文件替换)当前的对应文件。
确保全部都替换完毕之后,我们无法直接push,因为当前版本落后远程仓库多次提交,我们要git pull获取所有最新提交之后才能push。-----这也算是git的机制,所以我们不必担心忘记git pull直接git push的情况,因为远程仓库一旦有了新的commit,不git pull是无法git push成功的。
但是这时我们如果直接git pull那么文件权限会变成pull之后的情况,权限还是不正确。这时不要使用git push -f的形式,因为该形式会删除远程仓库上本版本之后的每次commit,这样我们无法git reset的方式回退到这些版本。当然,如果确定把那些后面的commit都迁移到这回的回退上面,也可以这么做。

光有解决办法还不够,我们需要预防办法:
在我们第一次git clone远程仓库代码到本地的时候,就直接把文件权限从git版本控制中移除。

Paste_Image.png

参考文章:http://www.01happy.com/git-ignore-filemode/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,653评论 9 163
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 12,764评论 1 26
  • 好讨厌追剧时会插播游戏广告,可有一次却令我心神荡漾,当那《花千骨》的悠扬旋律响起,脑海里不由浮现出相应剧情。...
    梨花兼着芭蕉阅读 1,313评论 0 0
  • 瀑布流布局是宽度固定,高度随机,从上到下的布局方式 父元素相对定位(relative),子元素绝对定位(absol...
    嘿菠萝阅读 5,424评论 0 0