zoukankan      html  css  js  c++  java
  • Git与GitHub的简单了解(1)

    本文参考书籍GitHub入门与实践整理所得,另外可以查阅Git Community Book中文版本以及外文版本资料链接

    Git与GitHub

    1. 前言

    GitHub:为开发者提供Git仓库的托管服务

    在Git中,开发者将源代码存入名为“Git仓库”的资料库中并加以使用,而GitHub则是在网络上提供Git仓库的一项服务。也就是说,GitHub上公开的软件源代码全部都由Git进行管理。

    Pull Request指开发者在本地对源代码进行更改后,向GitHub中托管的Git仓库请求合并的功能。


    ​ 版本管理在开发一款软件中占据着非常重要的低位,其必不可少的原因在于:可以记录一款软件添加或更改源代码的过程,回滚到特定的阶段,恢复误删除的文件等等..

    ​ 常规的版本管理分为集中型和分散型:

    • 集中型

    ​ 以Subversion为代表,其将仓库集中存放在服务器之中,具有便于管理的优点,但一旦开发者所处的环境不能连接服务器时,就无法获取最新的源代码,开发亦无法进行。

    ![1.jpg](http://wx4.sinaimg.cn/mw690/7b8d2108gy1finusspugjj20ca0393yn.jpg)
    • 分散型

    ​ 以Git为代表的分散型如下:GitHub将仓库Fork给每一个用户,Fork就是将 GitHub 的某个特定仓库复制到 自己的账户下。 Fork 出的仓库与原仓库是两个不同的仓库,开发者可以 随意编辑

    ![2.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1finust8aicj208z06omxh.jpg)
    ​ 分散型具有多个仓库,相对较复杂,但因为可以Fork到本地的开发环境下,所以开发者不必连接远程仓库即可进行开发。

    导入与安装Git :笔者为windows下的系统,下载链接如下:链接 详细安装过程若下:安装 也可以参看书籍中的章节介绍-->“GitHub入门与实践”

    1.1 必要设置

    ​ 注册github账号,安装好git后,首先应该设置SSH Key SSH 原理和基本使用

    加密传输的算法有好多,git可使用rsa,rsa要解决的一个核心问题是,如何使用一对特定的数字,使其中一个数字可以用来加密,而另外一个数字可以用来解密。这两个数字就是你在使用git和github的时候所遇到的public key也就是公钥以及private key私钥。

    其中,公钥就是那个用来加密的数字,这也就是为什么你在本机生成了公钥之后,要上传到github的原因。从github发回来的,用那公钥加密过的数据,可以用你本地的私钥来还原。

    如果你的key丢失了,不管是公钥还是私钥,丢失一个都不能用了,解决方法也很简单,重新再生成一次,然后在github.com里再设置一次就行

    $ ssh-keygen -t rsa -C "your_email@example.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key
    (/Users/your_user_directory/.ssh/id_rsa): 按回车键
    Enter passphrase (empty for no passphrase): 输入密码
    Enter same passphrase again: 再次输入密码
    

    ​ “your_email@example.com”的部分修改为创建账户时所使用的邮箱地址,成功后会显示:

    Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
    Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
    The key fingerprint is:
    fingerprint值 your_email@example.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    | .+ + |
    | = o O . |
    略
    

    ​ id_rsa 文件是私有密钥, id_rsa.pub 是公开密钥 。

    2. Git的基本操作

    • git init ---- 初始化仓库
    $ mkdir git-tutorial
    $ cd git-tutorial
    $ git init
    

    ​ 上述代码新建了一个名为git-tutorial的文件夹,通过git init语句进行初始化操作,执行后,git-tutorial目录下生成.git目录:

    Initialized empty Git repository in /Users/hirocaster/github/github-book
    /git-tutorial/.git/
    

    ​ 这个目录里存储着管理当前目录所需要的仓库数据,也被称为:附属于该仓库的工作树。因此若希望将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开。

    • git status ---- 查看仓库的状态
    $ git status
    # On branch master
    #
    # Initial commit
    #
    nothing to commit (create/copy files and use "git add" to track)
    

    ​ 结果显示了我们当前正处于 master 分支下。(分支 会在之后讲到)还显示了没有可提交的内容。

    ​ 因此,我们建立 README.md 文件作为管理对 象,为第一次提交做前期准备 。

    $ touch README.md
    $ git status
    
    # On branch master
    #
    # Initial commit
    ## Untracked files:# (use "git add <file>..." to include in what will
    be committed)#
    # README.md
    nothing added to commit but untracked files present (use "git add" to
    track)
    

    ​ 可以看到在 Untracked files 中显示了 README.md 文件 。

    • git add ----- 向暂存区中添加文件

    ​ 若只是在Git仓库的工作树中创建文件,该文件并不会被记入Git仓库的版本管理对象当中,用git status查看会显示在Untracked files里。如果想让文件成为Git仓库的管理对象,就需要git add命令将其加入暂存区(Stage或Index中)。

    $ git add README.md
    $ git status
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    # (use "git rm --cached <file>..." to unstage)
    #
    # new file: README.md
    #
    

    ​ 可以看到, README.md 文件显示在 Changes to be committed 中了。

    • git commit ---- 保存仓库的历史记录

      ​ git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中,通过这些历史记录我们可以在工作树中复原文件。

      • 记录一行的提交信息

        $ git commit -m "First commit"
        [master (root-commit) 9f129ba] First commit
        1 file changed, 0 insertions(+), 0 deletions(-)
        create mode 100644 README.md
        

        -m参数后的“First commit”称作提交信息。如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编辑器,随后提交就会被中止。

    • git log ----- 查看提交日志

    ​ git log命令可以查看以往仓库中提交的日志 ,可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别 。

    $ git log
    
    commit 9f129bae19b2c82fb4e98cde5890e52a6c546922
    Author: hirocaster <hohtsuka@gmail.com>
    Date: Sun May 5 16:06:49 2013 +0900
    
    	First commit
    

    ​ Author 栏中显示我们给 Git 设置的用户名和邮箱地址。 Date 栏中显示提交执行的日期和时间。再往下就是该提交的提交信息 。

    只显示提交信息的第一行

    ​ 如果只想让程序显示第一行简述信息(date行略去),可以在 git log命令后加上 --pretty=short

    $ git log --pretty=short
    
    commit 9f129bae19b2c82fb4e98cde5890e52a6c546922
    Author: hirocaster <hohtsuka@gmail.com>
    
    	First commit
    

    仅显示指定目录、文件和日志

    ​ 只要在 git log命令后加上目录名,便会只显示该目录下的日志 ,若加的是文件名,就会只显示与该文件相关的日志。

    $ git log README.md
    

    显示文件的改动

    ​ 如果想查看提交所带来的改动,可以加上 -p参数,文件的前后差别就会显示在提交信息之后 :

    $ git log -p
    
    • git diff ---- 查看更改前后的差别

    ​ git diff命令可以查看工作树、暂存区、最新提交之间的差别 ,我们现在向README.md文件中加入了一行:

    # Git教程
    

    ​ 执行 git diff命令,查看当前工作树与暂存区的差别 :

    $ git diff
    
    diff --git a/README.md b/README.md
    index e69de29..cb5dc9f 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1 @@
    +# Git教程
    

    ​ 解释一下显示的内容。“+”号标出的是新添加的行,被删除的行则用“-”号标出。我们可以看到,这次只添加了一行。 在执行 git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等
    确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针。

    $ git diff HEAD
    
    diff --git a/README.md b/README.md
    index e69de29..cb5dc9f 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1 @@
    +# Git教程
    
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
  • 相关阅读:
    Transformers 简介(下)
    OpenCV-Python 姿态估计 | 五十
    Transformers 简介(上)
    OpenCV-Python 相机校准 | 四十九
    在Keras中可视化LSTM
    分析师和统计学家可以和谐相处吗?
    Array类模板
    C++中 公有继承 私有继承 和保护继承的区别
    文件输入输出
    PTA(浙大数据结构,c语言)
  • 原文地址:https://www.cnblogs.com/SrtFrmGNU/p/7390962.html
Copyright © 2011-2022 走看看