美文网首页
未整理,git相关

未整理,git相关

作者: suhuanzhen | 来源:发表于2016-10-22 22:30 被阅读0次

    有可能出现这种情况,我们从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/

    相关文章

      网友评论

          本文标题:未整理,git相关

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