学习GitHub之路

一>引言

        先粗略的简单介绍下git,github,svn三者之间的区别。git是一个开源的分布式版本控制系统;github是基于git系统之上的一个面向开源及私有软件项目的托管平台;svn也是一个开放源代码的版本控制系统,与git最大的区别就是前者是集中式,后者是分布式的。至于详细专业的介绍可自行百度,这里就不做过多的描述了。

        git删除输入过的历史命令 :  删除 %HOMEPATH%/.bash_history 文件

          git在线教程 Pro Git(中文版)

二>GitHub使用的环境搭建

        1.去https://github.com注册一个自己的账户

        2.去git官网https://git-scm.com/下载最新版的git安装

        3.去tortoisegit官网https://tortoisegit.org/下载最新版安装(这是一个git的插件,方便像svn一样界面化的操作)

        4.上述2,3步骤一定要安装与本机系统对应的版本(例如我自己的就是windows x64),之所以单独列出这一点,是因为很重要,如果你电脑是64位而你却安装的32位的git和tortoisegit的话,会有各种bug,很多功能莫名其妙的用不了

        注:直接github官网上创建仓库或者git bash命令行创建仓库,这些基础的方法可自行百度,一大堆教程,我就不bb了


扫描二维码关注公众号,回复: 2159754 查看本文章

三>GitHub拉取代码

        上述环境完成后,就可以从远程仓库拉取代码了,远程拉取有两种方式:

        1.https : 需要输入账户邮箱,密码验证了才能开始拉取

        2.ssh :需要远程网页配置公钥,本地就可以直接拉取

        目前我使用的是第二种,很方,本地生成一个key,然后把key添加到github网页端的ssh keys里就ok了,很方便。至于怎么生成和添加key,可自行百度,这里就跳过了


四>GitHub上传大文件操作

        github规定上传的单个文件不能超过100m(我测试了超过50m就警告,但是不报错,超过100m才报错)

          对于大型项目,打包好的资源随随便便超过100m,超过1g的都有,所以这点限制很蛋疼,百度了下有各种破解方案介绍

例如: [Git] 处理 github 不允许上传超过 100MB 文件的问题这个链接介绍等(我就是参照这个教程搞定的)

        说的这么复杂,其实很简单,我总结下步骤:

        1.去官网https://git-lfs.github.com/ 下载Git Large File Storage (意思是: git大文件存储)

        2. 打开 git bash命令行(只要你装了git,直接点击桌面个鼠标右键有个"Git Bash Here",点击打开),cd到当前你要上传的项目目录下

(例如,我的是d:/code/test_pro),然后输入:

                    1> git lfs install                    // 初始化git-lfs(全局只需要初始化一次)

                    2> find ./ -size +50M          // 寻找当前目录size大于50m的文件, 然后等待搜索结果

                    3> git lfs track "文件路径"   // 这里的文件路径就是find的结果,直接复制过来就行,如果有多条就track多次(也可以直接文本编辑)

       3.track完成后,会在当前项目目录下生成一个".gitattributes"的文件,该文件记录了当前项目目录下大于50m的文件路径(你也可以设置大于20M,随你心情了),这是一个文本文件,可以直接打开的,然后你就懂了

        4.项目该怎么commit,push就照常操作就行(首先git fls会find出大文件,然后把大文件的路径加入到.gitattributes格式的文本文件中,push的时候git会检测这个lfs文件列表,push完成后的窗口你可以看到git会把lfs文件列表和普通文件分开push的,太详细的原理我也没深入研究,大家如果感兴趣可自行查阅相关资料)

        总而言之就是: 装个git lfs,把你觉得大的文件加入到.gitattributes格式的标记文件中,然后正常操作就ok了

        注: 目前 Git LFS的总存储量为1G左右,超过需要付费(具体的去自己的github查看自己的账单:账户->Settings -> Billing),所以要省着点用(上传的时候用git push,但下载的时候最好直接下载整个zip,跳过lfs流量,当然付费用户可以直接无视)

        麻蛋,之前一直不知道git lfs有配额限制,CAO,害我查了好久,总是提示"batch response: This repository is over its data quota. Purchase more data packs to restore access", 意思就是"仓库超出限额,需要配置更多的额度",果然好东西就是要钱的,给跪了……


五>GitHub合并2个仓库

    其实合并2个仓库的原理就是以一个仓库为主,把另一个仓库的文件记录等作为主仓库的分支拉取到当前主仓库,然后merge,commit,push

     具体的流程可以参照git合并两个不同的仓库这个博客的介绍

    我整理了下(git bash命令行下操作):

        1.添加远程仓库(repository_a, repository_b; 这里已repository_a为准, 合并远程repository_b)

        git remote add repository_b [email protected]:xxx/xxx.git

        2.从远程仓库repository_b下载

        git fetch repository_b

        3.将仓库repository_b的分支master拉取到本地,重命名为branch_b

        git checkout -b branch_b repository_b/master

        4.切回主仓库分支

        git checkout master

        5.将远程拉取的分支branch_b合并至主仓库分支master

        git merge branch_b --allow-unrelated-histories

        6.解决冲突

        git add .

        git commit -m "测试合并仓库repository_b"

        git push branch_b repository_b:master

        git checkout master

        git merge branch_b

        git master branch -d branch_b


六>GitHub 解决pull和push速度慢的问题

        这个速度慢的问题是真的蛋疼,我也折腾了好久,网上各种找资料,慢慢试出来的

        由于各种鸟政策什么的,总之访问国外的网站龟速shit一样,但是网上总有大神提供解决方案,我这里就借花献佛整理下:

        1.打开http://tool.chinaz.com/dns网站查询域名映射ip,例如

        52.216.228.192 github-windows.s3.amazonaws.com
        151.101.77.194 github.global.ssl.fastly.net
        151.101.76.133 assets-cdn.github.com

        192.30.253.112 github.com

        2.修改host文件

        "C:\Windows\System32\drivers\etc",打开host文件在最低端输入上述映射关系,保存

        "win + r" 快捷键打开cmd命令行输入cmd

        输入"ipconfig/flushdns"刷新dns,然后起飞

        我push一个2g多的项目,上传和下载基本1~2m/s,30min左右搞定,爽

        最主要的还是找对映射的ip,选择自己对应区域的ip,白天可能速度快点,半夜速度很慢只有16~30k左右

        切记多试几次,多换几个映射ip,flush一下,或者重启电脑试试,绝对会有效果的

        3.上述还是不行的话就找到git的安装目录: 例如我的是"D:\Program Files\Git\etc\ssh"

        打开"ssh_config"和"sshd_config"在最低端加入:

        UseDNS no
        GSSAPIAuthentication no
        Host github.com  
        User git  
        Hostname ssh.github.com  
        PreferredAuthentications publickey  
        IdentityFile /root/.ssh/id_rsa  

        Port 443

        然后重启git试试(该方案我还没试,改映射ip就搞定了,所以各位可以多试试)

        其实我也有个疑问,我用的是public库(因为private库要钱,你懂得),是不是改为private库速度就没这些吊毛限制呢?没试过……(会不会像百度云盘一样,不冲vip就被限速,充了就解除限制

        结尾: 我之前也是用svn的,最近项目改用git,各种吊毛流程操作,限制,网速慢啊什么的,瞬间懵逼了,烦死了,研究了2~3天才摸清楚门道,其实只单一的看网上教程而不动手实践的话都是扯淡,多实践几次就会印象深刻,瞬间记住流程操作了,git其实有很多命令操作的,要想全部记住太难了,只有用到的时候去记记,度娘一波,其实很简单的。我写这篇博客其实一方面是为了总结这两天的折腾,另一方面是作为借鉴资料提供给那些苦逼的新手。

        总之,现就写到这儿吧,以后遇到什么问题还会继续更新的。

        搞技术吗,不都是这样苦逼的过来的吗,寻求真理之路还是遥远和漫长的,贵在坚持。

        任何困难并不可怕,只是因为你不了解它。

猜你喜欢

转载自blog.csdn.net/dominating_/article/details/80593541