美文网首页
git与github基础

git与github基础

作者: 小贝学生信 | 来源:发表于2020-04-26 07:53 被阅读0次

    主要是基于廖雪峰官网git教程的学习笔记;感谢大佬们的分享,努力做一个海边拾贝的boy~

    0、背景

    Git是目前世界上最先进的分布式版本控制系统,用来托管代码。我的理解为

    • 版本控制:可以追踪代码文件创建以来的历史记录。
    • 分布式:代码文件可独立分布在每台用户计算机,为了用户合作方便,通常有一台充当“中央服务器”的电脑github,时刻更新最新的版本;用户想要复制或修改,直接从那里取一份到本地电脑处理即可。

    1、git安装

    Linux

    若命令行输入git,回车提示git未安装,输入下述命令直接安装即可。

    sudo apt-get install git   #适用于Debian或Ubuntu系统
    

    Windows

    进入git官网下载,安装(一路默认)即可。安装完成后,桌面鼠标右击,菜单中出现Git Bash Here;点击会出现一个类似Linux控制台的窗口即表示安装成功。

    小插曲:为了想从头演示一下,就把原来装好的git卸载了,重新下载练练手,可是发现今天官网下载速度巨慢......后来发现360软件管家有,几秒钟就下好了....


    • 注意下:安装后需要配置下个人的用户信息,即昵称加邮箱(无特殊要求)
    git config --global user.name "li"
    git config --global user.email "12******79@qq.com"
    

    --global参数表示全局配置,以后在本台电脑使用git,都默认为上面的用户信息,在之后的文件管理中都会有记录的。

    2、建立一个git本地仓库

    又叫版本库/repository。本质上就像一个文件夹,区别在于可以受git进行版本控制等管理。

    • 2.1、首先打开git bash,在指定路径创建一个文件夹
    cd ~/Desktop/
    mkdir git02  #目录名不要有中文
    cd git02
    pwd
    

    此时创建的文件夹和桌面其它一般文件夹本质相同

    • 2.2、git初始化
    git init
    ls -ah  #查看包括隐藏文件的所有文件
    

    发现当前目录下多了一个.git的目录,表示初始化成功,已经建立好一个版本库了。

    tips:可管理的文件类型只能是文本文件,因此适用于代码文件;不要使用windows记事本编写代码,推荐notepad++。

    2、储存一个文件(三步走)

    • git status命令返回当前版本库的状态,配合此命令会更好理解下面三步的意义。

    第一步:操作文件

    主要是修改增删,当然一开始有时是创建新文件;删除操作较特殊之后会说。

    vim 3.txt #工作区新建一个文本文件
    git status  #红色
    
    2-1

    第二步:add操作

    git add 3.txt  #将产生操作的文件 add 到暂存区 
    git status    #绿色
    
    2-2

    第三步:commit操作

    git commit -m "creat 3.txt"
    #将操作最终提交给版本库,并对本次提交 -m 选项进行说明
    git status  #白色 tree clean
    
    2-3

    通过上面三个过程可以知道git管理记录时,首先是在工作区实际对某些文本的操作(新建/修改/删除);然后将这些操作(注意是操作,比如增加了文本几行内容)记录传到暂存区(可以一次add多个);最后提交给git版本库,git通过有序得记录从文本创建到修改的操作过程的commit版本从而实现版本控制。


    三步关系

    复习一遍流程:修改3.txt文件

    vim 3.txt  #增加2行内容
    git diff 3.txt
    
    • 此时可以通过git diff命令将当前工作区文件与上一次commit版本比较,看一看具体改变了什么内容
      git diff
    git add 3.txt
    git commit -m "add 2 lines"
    
    增加2行

    如果是删除操作的话,要先在本地rm删除,然后在git版本库中删除

    rm 3.txt
    git status
    git rm 3.txt
    git commit -m "remove 3.txt"
    

    3、撤销修改

    主要分为以下3中情况的撤销

    3.1 工作区修改撤销

    • 例如在上文基础上不小心删除3.txt的最后一行,但还没有add到暂存区
    cat 3.txt
    vim 3.txt
    cat 3.txt
    git status
    
    3.1-1
    git checkout -- 3.txt
    cat 3.txt
    
    • git checkout --命令用于撤销指定文件的工作区修改,恢复至上一次commit的版本情况
      3.1-2

    如果是文件误删操作,也可以利用这种方法恢复。

    3.2 暂存区修改撤销

    如果上述的误操作已经add了--

    • 先使用git reset HEAD命令撤销add操作,恢复至工作区;
    • 再使用3.1的git checkout --命令恢复至原来版本。
    vim 3.txt
    git add 3.txt 
    git status 
    git reset HEAD 3.txt #撤销add
    git status
    git checkout -- 3.txt  #撤销修改
    

    3.3 commit修改撤销

    如果已经不慎连续add、commit,即完全在版本库中提交了一个新的版本commit,可以使用第四点介绍的版本控制,直接回到上一版本commit即可。

    4、版本控制

    • 即返回修改之前的,即上一次commit的版本。
    • 因为git有序得记录每次commit的版本操作内容,可以轻易的切换到历史版本。
    vim 3.txt #删除最后一行
    git add 3.txt
    git commit -m "delete the last line"
    
    • 这样自3.txt文件创建以来,该文件经历了两次修改,三次commit;
    • 可以使用git log查看这三次commit记录
    git log
    

    返回所有的3条操作记录(最近到最远):有commit版本号、修改人、日期、修改说明


    git log
    git log --pretty=oneline   #简洁版 只有commit号与修改说明
    git reflog  #返回历史命令,也可以用来查找commit版本号
    
    • 版本跳转方法:利用commit版本号即可
    git reset --hard b739c6af  #只需要前面几位即可
    git reset --hard HEAD^ #回退上一版本
    

    补充:标签tag

    标签tag号本质上作用等同于commit版本号。只是前者可自己命名(V1.0,V2.0...),比后者好记的得多。

    git tag v1.0  # 当前版本v1.0标签打好了
    git tag #查看所有标签
    git show v1.0 #查看该标签相关信息
    #可根据历史commit号补标签,如下
    git log --pretty=oneline --abbrev-commit
    git tag v0.9 b739c6a
    git tag -d v0.9  #删除标签
    git push origin v1.0 #推送标签到远程,远程操作见下第五点
    git push origin :refs/tags/v1.0  #删除远程标签
    

    5、远程仓库 github

    • 将本地git仓库与远程github库同步。这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作;
    • github网站本质上应该就是一个远程服务器,提供本地Git仓库托管服务的。
    • 在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有自己才能改)。所以不要把敏感信息放进去。

    5.1 公钥配置

    本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,因此需要在本地找到公钥交给github从而建立联系

    cd ~/.ssh
    # 如果发现该目录不存在 使用下一行代码即可生成
    # ssh-keygen -t rsa -C "12******79@qq.com"
    cat id_rsa.pub  
    #若发现秘钥邮箱是其它用户的,按该目录不存在情况处理
    
    • 把公钥内容文本复制下来;
    • 登录到github官网(需要提前注册账号),在设置栏中选择ssh key;
      注意下,GitHub允许添加多个Key
    • 分别添加公钥名称与复制内容即可。

    5.2 本地库实现远程同步push

    • 首先在github中新建一个仓库;
    • 然后回到git本地库中,将二者关联;
    git remote add origin git@github.com:xiaobei1999/git02_dist.git
    
    • 注意这里将远程库的名字惯例名为origin(实际人家叫git02_dist),方便操作;

    GitHub给出的地址不止一个,还可以用https://github.com/xiaobei1999/git02_dist.git 类的地址

    git push -u origin master
    
    • 推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样;
    • 从现在起,只要本地作了提交,就可以通过下面的命令把本地master分支(关于分支第六点会提到)的最新修改推送至GitHub
    git push origin master
    

    5.3 github仓库克隆到本地

    假如在github中fork别人的库(在GitHub上可以任意Fork开源仓库)到自己的github仓库,再将其克隆到本地进行操作、修改之类的。

    git clone git@github.com:xiaobei1999/git01
    cd git01
    ls
    
    • 注意不能将github中别人的仓库直接克隆到本地。

    github是全球通用的,有时可能国内连接稳定。国内的Git托管服务Gitee(gitee.com)与github发挥同样的功能,速度在国内会更稳定些。同一个本地库可以既关联GitHub,又关联Gitee。

    6、分支branch管理

    这是github的一大优势,分支管理十分高效,因此适合相关团队开发工作。因为以后对于我用的可能不是很多,就简单介绍一下吧~
    首先要理解下述过程

    • 如上.txt的操作,git会把commit看成点,git会将多次commit有序得串成一条时间线;这条线就是一条默认的、单独的分支,默认叫master;
    • 基于当前最新一次提交建立一个分支,暂名为dev,与master独立;
    • 独立的意思就是指在dev修改代码,提交后;master主支还保持在原来的状态。即dev分支比master主支领先一步;
    • 此时可以切换回master主支,合并dev的修改,再删除dev;即实现了dev分支的全部作用。

    一般开发中,master分支应该是非常稳定的,也就是仅用来发布新版本。开发者都是在dev中搞事情,每个人都有自己的分支,时不时地往dev分支上合并就可以了,最后合并到master中即可。

    vim 4.txt
    git add 4.txt
    git commit -m "new 4.txt"
    git branch #查看分支,当前应只有一个分支
    

    创建一条新分支,并在该分支中进行修改

    git checkout -b dev
    #-b参数表示创建并切换,等同于下面两行代码
    # git branch dev
    # git checkout dev
    git branch
    vim 4.txt
    git add 4.txt
    git commit -m "add 1 line"
    

    返回master 主支,完成合并

    git checkout master
    cat add  #发现并没有dev的修改,需要合并
    git merge dev 
    git branch -d dev #删除dev分支
    git branch
    
    • 合并特殊情况:master与dev分支都对同一文件进行各自的修改,这样合并就会产生一个冲突文件。需要对该文件手动修改成理想的结果再add、commit才可以,最后再删除分支即可。

    如前所述 git checkout --为撤销命令,容易记混。最新版本的git switch命令也支持分支功能,也更好理解。但是我刚试了下,发现命令不存在。可能版本比较低的原因吧 2.20.1


    以上是学习git教程的一些学习笔记。如有错误,欢迎各位朋友指正呀~

    相关文章

      网友评论

          本文标题:git与github基础

          本文链接:https://www.haomeiwen.com/subject/vrklwhtx.html