zoukankan      html  css  js  c++  java
  • git基础

    一、Git命令操作

    1、本地仓库初始化

    命令:git init

    将当前目录初始化为本地仓库。创建了名为.git的隐藏目录。使用ls -lA可查看。

    注意:.git目录中存放的是本地仓库相关的子目录和文件,不要轻易删除或修改。

    2、设置签名

    • 形式:
      • 用户名:例 tom
      • Email地址:例 goodMoring@atguigu.com
    • 作用:区分不同开发人员的身份
    • 注意:这里的签名与登录远程库所需的账号、密码无关。
    • 命令(可设置不同级别)
      • 项目级别/仓库级别:仅在当前本地库范围有效
        • git config user.name 用户名
        • git config user.email 用户邮箱
      • 系统用户级别:登录当前操作系统的用户范围
        • git config --global user.name 用户名
        • git config --global user.email 用户邮箱
      • 优先级:项目级别优先于系统用户级别。

    项目级别的签名被保存在.git下的config文件中。可使用命令cat .git/config命令查看文件内容。

    而系统用户级别的会被保存在用户家目录下的.gitconfig文件中,可使用命令cat ~/gitconfig查看。

    3、基本操作

    1)、状态查看操作

    git status

    查看工作区、暂存区状态

    2)、添加操作

    git add [file name]

    将工作区的“新建/修改”添加到暂存区

    3)、提交操作

    git commit -m "commit message" [file name]

    将暂存区的内容提交到本地库。-m参数说明提交信息,相当于注解,用来说明本次提交信息。不使用此参数会进入vim编辑器中进行设置。

    4)、查看历史记录

    git log显示详细的提交信息

    git log --pretty=oneline在一行简洁显示

    git log --oneline更为简洁的显示

    git reflog在上面的基础上,额外显示移动到其他版本的步数。

    注意:前三个只能显示当前所在版本即此版本以前的信息。而git reflog可以查看所有版本记录。

    5)、版本前进后退

    1.基于索引值操作(推荐)

    git reset --hard [索引值]

    2.使用^符号,只能后退

    git reset --hard HEAD^。^个数量就是要后退的个数。

    3.使用~符号

    若要回退多个版本,可以使用波浪线符号~来指定要回退的个数。例如:git reset --hard HEAD~3

    6)、reset命令的参数对比

    • --soft:仅仅在本地库移动HEAD指针
    • --mixed:在本地库移动HEAD指针,重置暂存区
    • --hard:在本地库移动HEAD指针,重置暂存区,重置工作区

    7)、删除文件并找回

    前提:文件被删除前,文件存在时的状态提交到了本地库。

    操作:

    • 若删除操作已经提交到本地库,那么回退到文件存在的版本
    • 若删除操作未提交到本地库,使用git reset --hard HEAD即可

    8)、比较文件差异

    git diff [文件名]

    默认是将工作区中的文件与暂存区中的文件进行比较。

    也可以将工作区中的文件与本地库中的某一版本进行比较,使用命令git diff [本地库中的历史版本] [文件名]

    如果不指定文件名,就会比较工作区中的所有文件。

    4、分支管理

    在版本控制过程中,使用多条线同时推进多个任务。

    1)、分支的好处

    1. 同时并行推进多个功能开发,提供开发效率
    2. 各个分支在开发过程中,如果某一个分支开发失败,不会影响其它分支。删除失败分支重新开始即可。

    2)、分支操作

    • 创建分支git branch [分支名]
    • 查看分支git branch -v
    • 切换分支git checkout [分支名]
    • 合并分支
      • 第一步:切换到接收修改的分支
      • 执行git merge [分支名]命令

    3)、解决冲突

    不同的分支上进行的操作可能会产生冲突。例如:对同一个文件的同一行内容进行了不同的修改。在合并分支时就会产生冲突。并且冲突的地方会标记出来。

    • 第一步:编辑文件,删除特殊符号。(标注错误地方的符号)

    • 第二步:把文件修改好,保存退出

    • 第三步:git add [文件名]

    • 第四步:git commit -m "日志信息",注意此时不要带具体文件名。

    二、Git基本原理

    1、hash算法

    哈希是一个系列的加密算法,各个不同的hash算法虽然加密强度,但是有以下几个共同点:

    1. 不管输入数据的数据量多大,用同一个哈希算法,得到的加密结果长度固定。
    2. 哈希算法确定,输入数据确定,输出确定
    3. 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
    4. 哈希算法不可逆

    Git底层采用的是SHA-1算法。

    2、Git保存版本的机制

    Git把数据看做是小型文件系统的一组快照。每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。

    3、Git分支管理机制

    Git分支的管理实质上就是创建一个新的指针,并将HEAD指向这些不同的指针来切换分支。

    三、Git管理远程库

    1、为远程库起别名

    每次推送到远程库都要输入远程库的一长串地址很不方便。我们可以为远程库起别名。使用别名就能推送了。

    git remote add 别名 远程库地址

    2、推送到远程库

    git push 别名|远程库地址 分支名
    如果要将本地的分支推送到仓库的一个分支上,先在本地切换到要推送的分支,再使用git push -u 别名|仓库地址 分支名,如果远程仓库没有此分支,就会创建此分支,然后将本地分支推送到对应的分支上

    3、克隆

    git clone 远程库地址

    1. 完整的把远程库下载到本地
    2. 创建origin远程库地址别名
    3. 初始化本地库

    4、邀请其他成员加入团队

    可以将其他人邀请加入团队,这样别人也可以对远程库进行读写操作。

    5、远程库的拉取

    pull=fetch+merge

    git fetch [远程库地址] [远程分支名]

    git merge [远程库地址/远程库分支]

    fetch将会在本地创建一个名为远程库地址/远程库分支的分支,不会修改当前分支。

    git pull [远程库别名|地址] [分支名]。会直接将远程库上的内容拉取到本地并合并到对应的分支上。

    6、协同开发的冲突解决

    如果不是基于Github远程库的最新版所做的修改,不能推送,必须先拉取

    拉取下来进入冲突状态,则按照“分支冲突解决”操作解决即可。

    7、跨团队协作

    第一步:团队外人员先fork,就会创建一个属于自己的相同的远程库。

    第二步:本地修改,然后推送到远程

    第三步:在远程库pull request。在点击new pull request就能看到自己所做的修改,然后可以create pull request,这样就能将自己的远程库的请求发送给原始库的拥有者。

    第四步:原始库的拥有者对pull request进行审核。若通过可以合并。

    第五步:将远程库修改拉取到本地

    8、SSH登录

    1. 进入当前用户家目录cd ~
    2. 删除.ssh目录rm -rvf .ssh
    3. 运行命令生成.ssh密钥目录ssh-keygen -t rsa -C 邮箱地址
    4. 进入.ssh目录,目录内生成有id_rsaid_rsa.pub文件,将id_rsa.pub中的内容,添加到github的ssh key中
    5. 可以使用ssh地址进行推送。为方便也可以为ssh地址起别名
  • 相关阅读:
    点击区域外隐藏该区域,event.stopPropagation()
    PHP 笔记一(systax/variables/echo/print/Data Type)
    <hr> 的18种样式
    CSS 设置背景透明度,不影响子元素
    console.dir() 与 console.log() 区别
    JS 鼠标滚轮事件(mousewheel/DOMMouseScroll)
    HTML 字符图案
    CSS 样式优先级
    替换元素和不可替换元素,块级元素和行内元素
    CSS3 笔记五(Buttons)
  • 原文地址:https://www.cnblogs.com/ylcc-zyq/p/12659254.html
Copyright © 2011-2022 走看看