zoukankan      html  css  js  c++  java
  • Git 学习笔记

    Git 简介

    Git,开源,分散型版本控制系统。由于 Linux 内核开发使用的 SCM 版权变更,Linux 创始人便创建了 Git。现在 Git 的仓库管理功能是 GitHub 的核心。

    在 Git 之前还有 Apache 的 SVN,集中型。

    集中型:将所有仓库集中存放在服务端,所以最终只有一个仓库。因此便于管理。缺点:服务器出现磁盘故障,版本库的完整性无法保证;服务器无法连接,无法获取最新的源码。

    分散型:不存在服务端。开发者之间可以互相 pull 和 push,Fork 和 Pull Request,因此需要事先制定规范,不然初学者不知道最新的代码在哪个仓库。Fork 就是将 Git 的某个仓库复制到自己的账户下,但 Fork 的仓库和原仓库是不同的仓库。

    由于 Git 和 GitHub 的普及,要是规则制定得当,分散型也能便于管理。

    Git 与 SVN 的区别:

    • Git 是分布式,最核心的区别。
    • 所有的 SCM 都是把文件的元信息隐藏在类似 .svn 的文件夹里。在这种文件夹里,Git 按元数据存储内容,SVN 按文件。
    • 分支不同。
    • Git 没有全局版本号,SVN 有。Git 比 SVN 缺少的最大的特征。
    • Git 内容完整性比 SVN 好:Git 内容存储使用 SHA-1 哈希算法。在分布式的基础上,进一步确保内容完整性,降低磁盘故障和网络问题对版本库的破坏。

    Git 配置

    Linux 或者 Mac 环境以 LF 换行;Win 环境以 CRLF 换行。GitHub 中公开的代码大部分以 LF 换行,所以在安装 Git 的时候,应选择 Checkout CRLF,commit LF。

    提供了一个 git config 工具,用来配置或读取相应的环境变量。在 Win 环境下,环境变量可以保存在三个地方的文件夹:

    • 安装目录 / mingw64 / etc / gitconfig 文件:系统配置,对所有用户都适用。使用 git config --system [值] 命令读写。
    • 用户主目录 / .gitconfig 文件:只适用该用户。使用 git config --global [值] 读写。
    • 当前项目 / .git / config 文件:只适用当前项目。使用 git config 读写。适用范围越小的配置,会覆盖范围大的相同配置。

    配置文本编辑器(默认可能是 vi 和 vim)和差异分析工具(也可以自己开发工具):

    查看配置信息:

    查看配置信息列表(如果没有添加选项,就可能会有重名的配置。从上到下,对应配置范围从大到小):

    git config --list

    读写某一个:

    git config key [value]

    或者直接找到文件进行编辑,还或者用命令(如在用户主目录下):

    atom .gitconfig

     Git 工作区、暂存区、版本库

    • 工作区:磁盘下能看到的目录(非隐藏目录)。
    • 版本库:即之前提到的 .git 目录,是隐藏目录。
    • 暂存区:一般存放在版本库的 index 文件中。英文名称为 stage 或者 index,故有时也称索引。

    三者关系如下:

     


    GitHub:

    1. 本地创建ssh key:ssh-keygen -t rsa -C "your_email@youremail.com"。直接全部回车,使用默认值(在用户目录下生成.ssh文件夹,存放公钥和私钥)
    2. 打开公钥id_rsa.pub,复制key,然后在github上添加SSH Key。
    3. 验证是否成功:ssh -T git@github.com(使用某个ip第一次执行该命令,访问github时,会提示输入“密码”)
    4. 设置用户名和邮箱(commit的时候会记录):
      1. git config --global user.name "your name"
      2. git config --global user.email "your_email@youremail.com"
  • 相关阅读:
    LeetCode "Jump Game"
    LeetCode "Pow(x,n)"
    LeetCode "Reverse Linked List II"
    LeetCode "Unique Binary Search Trees II"
    LeetCode "Combination Sum II"
    LeetCode "Divide Two Integers"
    LeetCode "First Missing Positive"
    LeetCode "Clone Graph"
    LeetCode "Decode Ways"
    LeetCode "Combinations"
  • 原文地址:https://www.cnblogs.com/quanxi/p/8213881.html
Copyright © 2011-2022 走看看