zoukankan      html  css  js  c++  java
  • github入门书籍总结

    第一章 由来

    • GitHub是为开发者提供Git仓库的托管服务。

    • Git与GitHub的区别:在Git中,开发者将源代码存入名叫“Git仓库”的资料库中并使用;而GitHub则是在网络上提供Git仓库的一项服务。

    • Pull Request使得地球上不同位置不同时间的开发者共同开发软件。

    • GitHub Flavored Markdown语法被用于GitHub作文字标记使用。

    • GitHub以人为中心,我们可以看到一个人公开的所有源代码,还能看出其他的信息,包括提交信息等。

    • Issue功能是将一个任务或问题分配给一个Issue进行追求和管理的功能。

    第二章 基本知识简介

    • 版本管理就是管理更新的历史记录。

    • 集中型,将所有数据集中存放在服务器中,便于管理,但一旦开发者所处环境无法连接服务器时,就无法获取最新的源代码,使得开发停滞下来。万一翻身服务故障导致数据消失,那就一切前功尽弃了。

    • 分散性,GitHub将仓库Fork给了每一个用户,分散性拥有多个仓库,开发者本地就有仓库,无需连接远程服务器就可以进行开发。

    • Fork就是将GitHub的某个特定仓库复制到自己的账户下,Fork的仓库与原仓库是两个不同的仓库,开发者可以随便编辑。

    • 所有仓库之间可以push和pull,即使不通过GitHub,开发者A也可以直接向开发者B的仓库进行push和pull。

    • linux和mac系统自带Git,windows安装git应用程序git bash。

    • 设置姓名和邮箱地址,输入内容会在~/.gitconfig中显示

    git config --global user.name "Firstname Lastname"

    git config --global user.email "email@example.com"

    • 另外,为了提高可读性,可以设置

    git config --global corlor.ui auto

    第三章 初始操作

    3.1 注册账号

    • 注册账号https://github.com/

    • 设置SSH Key,GitHub上连接已有仓库时的认证,是通过使用了SSH的公开密钥认证方式进行的。

    
    $ 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: 再次输入密码
    
    

    需求:注册有限,密码,生成的ssh密钥会放置在/Users/your_user_directory/.ssh/,包括id_rsaid_rsa.pub

    然后将id_rsa.pub其添加至注册GitHub账号的SSH keys中,id_rsa是私钥,需要自己慎重保存,切勿公开。添加位置

    之后就可以使用手中的私人密钥与GitHub进行认证和通信了。测试:

    ssh -T git@github.com

    Hi hugechuanqi! You've successfully authenticated, but GitHub does not provide shell access.表示成功。

    3.2 创建仓库

    • 创建仓库repository,参考笔记

    • .gitgnore文件记录不需要在Git仓库中进行版本管理的文件。

    • README.md文件标明本仓库所包含的软件的概要、使用流程、许可协议等信息。

    • clone仓库,将已有仓库clone到本地电脑上进行开发:

    git clone https://github.com/hugechuanqi/MachineLearing.git

    • 然后编写代码或其他文件,例如.md, .py, .cpp, .c, .java, .txt等,此处假设为hello_world.php,内容自定。

    • 提交,通过git add命令将文件加入暂存区,再通过git commit命令提交

    git add hello_world.php

    git commit -m "Add very good script by php" -m表示提交说明

    可以通过git log查看日志;公开的源代码也拥有软件著作权,协议包括BSD修正协议,Apache许可协议,MIT许可协议

    • 然后执行push,GitHub上的仓库就会被更新:

    git pull

    第四章 具体实际操作

    4.1 初始化仓库及相关操作

    • git init初始化仓库,要使用版管理,首先得初始化一个仓库,实际建立一个目录并初始化仓库:
    
    mkdir git-tutorial
    
    cd git-tutorial
    
    git init
    
    

    目录底下会生成.git目录,存储着管理当前目录内容所需的仓库数据。在Git中,这个目录的内容成为“附属于该仓库的工作树”,文件编辑等操作在工作树中进行。

    • git status显示Git仓库的状态。

    • git add表示向暂存区中添加文件。

    • git commit命令可以将当前的暂存区中的文件实际保存到仓库的历史纪录中,保存仓库的历史记录。

    • git log查看提交日志

    git log -p 显示文件的改动

    git log -p README.md 仅查看README.md文件的提交日志。

    git diff 查看更改前后的差别,可以查看工作树、暂存区、最新提交之间的差别。

    4.2 分支操作

    • 分支操作:从master分支创建feature-A分支和fix-B分支,每个分支中都拥有自己的最新代码;master分支是Git默认创建的分支。

    • git branch命令可以显示分支名列表;

    • git checkout -b创建和切换分支;

    git checkout -b feature-A

    git checkout master 表示切换到master分支

    git checkout - 切换回上一个分支

    • 特性分支,是集中实现单一特性,除此之外不进行任何作业的分支,往往特性分支会有数个,如feature-A,而保留一个可以随时发布软件的稳定分支,如master。

    • 主干分支,master,是特性分支的原点,也是特性分支的终点。

    • git merge合并分支,假设分支feature-A上的内容已经实现完毕,这时应该先切换到主干分支master中,然后

    git merge --no-ff feature-A

    • git reset 回溯历史版本

    git reset --hard 3e3e67a1a94cc6180dcd0bbdd2efa91076073422 其中这一长串数字是时间节点的哈希值。git log之后就可以看到,在commit后面。

    git checkout -b fix-B 创建特性分支

    4.3 消除冲突

    • 消除冲突,系统在合并README.md时,feature-A分支更改的部分与本次想要合并的fix-B分支更改的部分发生了冲突,因此需要解决这个冲突。打开README.md文件会发现以下内容:
    <<<<<<< HEAD
    - Feature-A
    =======
    
    - fix-B
    >>>>>>> fix-B
    

    其中,=======以上的部分是当前HEAD的内容,以下的部分是要合并的fix-B分支中的内容。我们在编辑器中将其改成想要的样子,即

    - Feature-A
    - fix-B
    

    这样,就可以让feature-A和fix-B的内容并存于文件之中;但是在实际中,往往需要删除其中一个。然后提交:
    git add README.md
    git commit -m "solve the conflict"

    • git commit --amend修改提交信息
      git commit --amend 然后在编辑器中修改并保存
      随后git log --graph就可以看到提交日志的相应内容已经被修改。

    4.4 压缩历史

    • git rebase -i 压缩历史,若发现前一个提交内容有错,则提交一个修改,并将这个修改包含到前一个提交之中,压缩成一个历史记录。过程为:
      • git checkout -b feature-C #创建新分支
      • git commit -am "Add feature-C" #提交内容
      • git diff #查看修改后的差别,如何修改内容就是对文件的操作了
      • git commit -am "Fix typo" #Fix typo英文意思是错字和漏字
      • git rebase -i HEAD~2 #将修改的内容“Fix typo”与前一次的提交合并
    • git checkout master 切换到主分支
    • git merge --no-ff feature-C 将分支feature-C与master主分支合并

    4.5 推送至远程仓库

    • Git是分散型版本管理系统,为防止与其他仓库混淆,仓库名请与本地仓库保持一致,即git-tutorial。为了提高整合性,创建仓库时不要勾选初始化README文件。

    • git remote add 添加远程仓库。在GitHub上创建的仓库路径为"git@github.com: 用户名/git-tutorial.git"。用git remote add命令将其设置成本地仓库的远程仓库。例如:

      • git remote add original git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git
        上述操作之后,Git会自动把git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git远程仓库的名称设置为origin(标志符)。
    • git push 推送至远程仓库

      • git push -u origin master 把当前分支的内容推送给远程仓库origin的master分支。-u阐述可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加-u阐述有利于之后运行git pull命令从远程仓库获取内容时,省去了另外添加的麻烦。
    • git push 推送至master以外的分支

      • git checkout -b feature 创建分支
      • git push -u origin feature-D 将当前分支push给远程仓库并保持分支名称不变。之后就可以在远程仓库的GitHub页面就可以查看到feature-D分支。

    4.5 从远程仓库获取

    • git clone 获取远程仓库。
      切换到非仓库目录名下后,执行git clone git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git,我们会默认处于master分支,同时系统会自动将origin设置成该远程仓库的标识符。即当前仓库的master分支与GitHub端的远程仓库(origin)的master分支在内容上完全相同。

    • git branch -a 命令查看当前分支的相关信息。

    • 获取远程的feature-D分支(??此处有点问题,今天暂时没时间修改)

      • git checkout -b feature-D origin/feature-D. -b参数后面是本地仓库中新建分支的名称。为了与远程仓库origin/feature-D保持同名,此处-b后面也起名为feature-D,过程如下:
    git init
    git remote add origin git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git    #将远程仓库名称设置为origin
    git checkout -b feature-D origin/feature-D    #新建分支,并获取远程分支内容
    
    • git pull 获取最新的远程仓库分支
      • git pull origin feature-D 将本地的feature-D分支更新到最新状态。如果两人同时修改了同一部分的源代码,push时就很容易发生冲突,所以多人同时在同一个分支中进行作业时,为减少冲突情况的发生,建议更频繁地进行push和pull操作。

    推荐资料
    1、Pro Git:http://git-scm.com/book/zh/v1,是一本零基础Git学习资料。Scott Chacon书写。
    2、LearnGiBranching:http://pcottle.github.io/learnGitBranching/,是学习Git基本操作的网站,偏重树形结构。
    3、tryGit:http://try.github.io/ 可以在Web上一边操作一边学习Git的基本功能。

    97/286 未完待续

    参考:书籍:github入门与实践

  • 相关阅读:
    CSS计数器
    CSS3选择器的研究
    CSS3新技能学习笔记
    CSS3伸缩布局Flex学习笔记
    被废了的display:box弹性盒模型
    领会CSS,实际中的研究
    移动端调试工具DebugGap推荐。
    Python学习笔记
    按位运算符以及位移运算探讨
    AJAX大文件切割上传以及带进度条。
  • 原文地址:https://www.cnblogs.com/hugechuanqi/p/10461988.html
Copyright © 2011-2022 走看看