zoukankan      html  css  js  c++  java
  • GitHub 基本常用知识解答

    1、Fork、Watch、Star 是什么意思?

     

    fork的意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录,

    fork后这个代码库是完全独立的,属于你自己,你可以在自己的库中做任何修改,当然也可以通过Pull Request向原来的库提交合并请求。

     

    顺便说一下Watch和Star:

    • Watch,意思是关注,关注后,代码库中有新的commit你都会收到通知;

    • Star,与watch不同,star相当于收藏,你可以方便地找到你star过的库,但是不会收到关于那个库的任何通知。   

    2、gitHub 上的SSH公钥 是什么意思 ?

         作用:使用SSH公钥可以让你在你的电脑和Git@OSC通讯的时候使用安全连接

        

    通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。但是密码认证有以下的缺点:

    • 用户无法设置空密码(即使系统允许空密码,也会十分危险)
    • 密码容易被人偷窥或猜到
    • 服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,导致密码容易泄露,而且修改密码时必须通知所有人

    而使用公钥认证则可以解决上述问题。

    • 公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
    • 多个使用者可以通过各自的密钥登录到系统上的同一个用户

     公钥认证的原理

    所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容,用于加密;

    另一个称为密钥(private key),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。

    ssh 的公钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。

    为了说明方便,以下将使用这些符号。

    Ac 客户端公钥
    Bc 客户端密钥
    As 服务器公钥
    Bs 服务器密钥

    在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

    认证过程分为两个步骤。

    1. 会话密钥(session key)生成
      1. 客户端请求连接服务器,服务器将 As 发送给客户端。
      2. 服务器生成会话ID(session id),设为 p,发送给客户端。
      3. 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
      4. 客户端将 r 用 As 进行加密,结果发送给服务器。
      5. 服务器用 Bs 进行解密,获得 r。
      6. 服务器进行 r xor p 的运算,获得 q。
      7. 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
    2. 认证
      1. 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
      2. 客户端使用 Bc 解密 S(x) 得到 x
      3. 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
      4. 服务器计算 q + x 的 md5 值 m(q+x)
      5. 客户端将 n(q+x) 发送给服务器
      6. 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功

    3、.gitignore文件

    .gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。

    一般我们写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。

    我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。

    这时我们就需要.gitignore了。比如一般c#的项目我的.gitignore是这样写的:

    4、   Git fetch和git pull的区别

              Git中从远程的分支获取最新的版本到本地有这样2个命令:

        1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

         git fetch origin master
         git log -p master..origin/master
         git merge origin/master
        以上命令的含义:

       首先从远程的origin的master主分支下载最新的版本到origin/master分支上
       然后比较本地的master分支和origin/master分支的差别
       最后进行合并
       上述过程其实可以用以下更清晰的方式来进行:

        git fetch origin master:tmp
        git diff tmp 
        git merge tmp

        从远程获取最新的版本到本地的test分支上之后再进行比较合并

    2. git pull:相当于是从远程获取最新版本并merge到本地

        git pull origin master

        上述命令其实相当于git fetch 和 git merge
        在实际使用中,git fetch更安全一些因为在merge前,我们可以查看更新情况,然后再决定是否合并
     
  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/4543276.html
Copyright © 2011-2022 走看看