Git与GitHub总结笔记-参考《GitHub入门与实践》

前言:虽然已经用过一段时间自己的git服务器和github,但是看到这本书还是想深入了解一下。正好最近微软收购了Github,因此写了这篇笔记纪念一下2333。这本书深入介绍了关于Git的知识,有利于加深对Git的理解,还是比较推荐的。

  • 关于GitHub
    1. GitHub总部:旧金山
    2. 吉祥物:Octocat
    3. 不只是Git仓库托管服务
    4. 协同工作的软件:群件(Groupware)、CRM(Customer Relationship Management,顾客关系管理)
    5. Pull Request 是指开发者在本地对源代码进行更改后,向GitHub 中托管的Git 仓库请求合并的功能。不但能轻松查看源代码的前后差别,还可以对指定的一行代码进行评论。
    6. GitHub Flavored Markdown(GFM)语法
    7. @用户:输入“@ 组织名”可以让属于该组织的所有成员收到通知
    8. 输入“# 编号”,会连接到该仓库所对应的Issue 编号。
    9. 社会化编程的概念
    10. Issue 功能,是将一个任务或问题分配给一个Issue 进行追踪和管理的功能
    11. Wiki:开发文档或手册的编写
    12. Linux 的创始人Linus Torvalds 在2005 年开发了Git 的原型程序。当时,由于在Linux 内核开发中使用的既有版本管理系统的开发方许可证发生了变更,为了更换新的版本管理系统,Torvalds 开发了Git。
  • Git安装

    1. 关于windows换行符的处理
      GitHub 中公开的代码大部分都是以Mac 或Linux 中的LF(LineFeed)换行。然而,由于Windows 中是以CRLF(Carriage Return +Line Feed)换行的,所以在非对应的编辑器中将不能正常显示。
      Git 可以通过设置自动转换这些换行符。使用Windows 环境的各位,请选择推荐的“Checkout Windows-style, commit Unix-style line endings”选项。换行符在签出时会自动转换为CRLF,在提交时则会自动转换为LF。
    2. 初始设置
      • 首先来设置使用Git 时的姓名和邮箱地址。名字请用英文输入。

        $ git config --global user.name "Firstname Lastname"
        $ git config --global user.email "[email protected]"

        这个命令,会在“~/.gitconfig”中以如下形式输出设置文件。

        [user]
        name = Firstname Lastname
        email = [email protected]

        想更改这些信息时,可以直接编辑这个设置文件。这里设置的姓名和邮箱地址会用在Git 的提交日志中
      • 提高命令输出的可读性
        将color.ui 设置为auto 可以让命令的输出拥有更高的可读性。

        $ git config --global color.ui auto

        “~/.gitconfig”中会增加下面一行。

        [color]
        ui = auto
    3. GitHub

      • 头像
        在GitHub 上随处可见的头像(账户独有的标识)是通过Gravatar服务显示的。
      • 创建SSH Key 命令

        ssh-keygen -t rsa -C "[email protected]"

        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.
        id_rsa 文件是私有密钥,id_rsa.pub 是公开密钥。

      • 验证:用手中的私人密钥与GitHub 进行认证和通信

        $ ssh -T git@github.com
      • .gitignore 文件 用来描述Git 仓库中不需管理的文件与目录。

      • 在GitHub 上,有修正BSD 许可协议、Apache 许可协议等多种许可协议供人们选择,不过大多数软件都使用MIT 许可协议。实际使用时, 只需将LICENSE 文件加入仓库, 并在README.md 文件中声明使用了何种许可协议即可。
    4. 自己总结了一下基本命令

      • git init初始化仓库:如果初始化成功,执行了git init命令的目录下就会生成.git 目录。这个.git 目录里存储着管理当前目录内容所需的仓库数据。在Git 中,我们将这个目录的内容称为“附属于该仓库的工作树”。
      • git status查看仓库的状态。
      • git add命令将文件加入暂存区。
      • git commit -m "提交信息"将当前暂存区中的文件实际保存到仓库的历史记录中。
      • 记录详细提交信息的话,不加-m,执行后会启动编辑器。
        在编辑器中记述提交信息的格式如下。
        ● 第一行:用一行文字简述提交的更改内容
        ● 第二行:空行
        ● 第三行以后:记述更改的原因和详细内容
        在以#(井号)标为注释的Changes to be committed(要提交的更改)栏中,可以查看本次提交中包含的文件。将提交信息按格式记述完毕后,请保存并关闭编辑器,以#(井号)标为注释的行不必删除。
      • 如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编辑器,随后提交就会被中止。
      • 写在一起:git commit -am ""
      • git log命令查看提交日志 。
      • git log --pretty=short只显示提交信息的第一行 。只要在git log命令后加上目录名,便会只显示该目录下的日志。如果加的是文件名,就会只显示与该文件相关的日志。
      • git log -p查看提交所带来的改动
      • git push更新仓库
      • git diff查看当前工作树与暂存区的差别
      • git diff HEAD查看工作树和最新提交的差别。在执行git commit命令之前先执行 git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的HEAD 是指向当前分支中最新一次提交的指针。
      • git branch命令可以将分支名列表显示,同时可以确认当前所在分支。“*”表示这是我们当前所在的分支。
      • git checkout -b "branch name"以当前的master 分支为基础创建并切换到新的分支
      • git checkout -用“-”(连字符)代替分支名,就可以切换至上一个分支。
      • git merge --no-ff feature-A合并分支。为了在历史记录中明确记录下本次分支合并,需要创建合并提交。因此,在合并时加上–no-ff参数。随后编辑器会启动,用于录入合并提交的信息。 将编辑器中显示的内容保存,关闭编辑器。
      • git log --graph以图表形式查看分支
      • git reset回溯历史版本,要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用到git reset –hard命令。只要提供目标时间点的哈希值A就可以完全恢复至该时间点的状态。

        $ git reset --hard fd0cbf0d4a25f747230694d95cac1be72d33441d
        HEAD is now at fd0cbf0 Add index

        git log命令只能查看以当前状态为终点的历史日志。使用git reflog命令,查看当前仓库的操作日志。

      • git commit --amend修改上一条提交信息,执行命令后,编辑器就会启动。
      • git rebase -i压缩历史,git rebase -i HEAD~2选定当前分支中包含HEAD(最新提交)在内的两个最新历史记录为对象,并在编辑器中打开。
      • 错字漏字等失误称作typo,将提交信息记为”Fix typo”。
      • git remote add设置成本地仓库的远程仓库
        $ git remote add origin [email protected]:github-book/git-tutorial.git 按照上述格式执行git remote add命令之后,Git 会自动将[email protected]:github-book/git-tutorial.git远程仓库的名称设置为origin(标识符)。
        或者git remote add origin https://github.com//gitname.git
      • git push -u origin master将当前分支下本地仓库中的内容推送给远程仓库,。-u参数可以在推送的同时,将origin 仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin 的master 分支获取内容,省去了另外添加参数的麻烦。
      • 推送至master 以外的分支:

        git checkout -b feature-D
        git push -u origin feature-D

        在本地仓库中创建feature-D 分支,并将它以同名形式push 至远程仓库。 将它push 给远程仓库并保持分支名称不变。

      • git branch -a命令查看当前分支的相关信息。添加-a参数可以同时显示本地仓库和远程仓库的分支信息。
      • git checkout -b feature-D origin/feature-D将feature-D 分支获取至本地仓库。
      • git pull origin feature-D使用git pull 命令,将本地的feature-D 分支更新到最新状态。
      • 强行pull命令:

        git fetch --all // 只是下载代码到本地,不进行合并操作
        git reset --hard origin/master  // 把HEAD指向最新下载的版本
      • git log --oneline把每个提交压缩到了一行。显示提交id和提交信息的第一行

      • git log --decorate提交的引用(分支、标签)

你可能感兴趣的:(技术)