美文网首页
Git与GitHub的简介

Git与GitHub的简介

作者: Jason_M_Ho | 来源:发表于2018-02-04 23:23 被阅读0次

    Git的概念

    Git是一个工具,分布式版本控制系统的软件
    Github是一个网站,面向开源及私有软件项目的托管平台,基于git技术的,所以称做github

    Git和SVN的对比:
    1)Git是分布式的,SVN是集中式;
    2)Git每个历史版本存储完整的文件,SVN存储文件的差异;
    3)Git可离线完成大部分操作,SVN则必须与中央服务器进行网络交互;
    4)Git有着优雅的分支和合并功能;
    5)Git有着更强的撤销修改和修改版本历史的能力;
    6)Git速度更快,效率更好;

    Git的安装:

    CentOS6.5环境: yum install git

    which -a git查看git的安装位置
    git version 查看git的版本
    git help查看Git的命令的详细信息

    强烈建议读者先在GitHub上面注册一个账号

    Git的简单配置

    Git在使用前要先配置用户名和邮箱,以标明提交者的身份
    添加user.nameuser.email
    git config --global user.name jason
    git config --global user.email jason@gmail.com

    查看user.name/user.email
    git config user.name
    git config user.email

    添加一个新的user.name
    git config --global --add user.name newname

    得到属性的值
    git config user.name
    git config --get user.name

    得到全局所有属性的值
    git config --list --global

    删除一个属性,并且是指定属性名进行删除
    git config --global --unset user.name newname

    git config --list --global

    当只有一个属性值的时候,我们可以在删除时不指定值
    git config --global --unset user.name

    git config --list --global

    git config --global user.name jason
    git config --list --global

    Git命令的基本使用:

    git init 创建仓库

    添加一个readme.txt
    git status 查看当前版本库的状态
    git add filename 使用git add命令告诉git,把该文件添加到仓库
    git commit -m 'comment'使用git commit命令告诉git,把文件提交到仓库

    将文件提交到仓库,需要两步:

    1) git add
    2) git commit
    

    要提交文件,首先明确一下git的三个区的概念:

    工作区 暂存区 历史区

    工作区就是你的工作文件目录
    暂存区是把工作区的文件 add 进来,但是还没有提交到仓库时的缓存区域
    历史区就是仓库,commit 以后存放操作版本记录的仓库

    打个比方:工作区好比是货车,暂存区好比是临时存放货物的小棚子,历史区好比是放货物的仓库。
    add就是把货从货车上搬到小棚子,commit就是把货从小棚子搬进仓库。

    git add 可以反复添加多个
    git diff 查看修改的内容
    git log 可以查看所有的提交历史记录
    git log filename 仅查看指定文件名的提交历史记录
    git log --pretty=oneline filename
    d085ee8434392d2cf88b48592f29fbeefb0818f7 commit id(版本号) SHA-1 Hash计算出来一个16进制的值

    git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    此命令可以输出漂亮格式的log

    版本回退:

    前提:知道当前版本是哪个, HEAD表示当前版本
    回退到上一个版本: HEAD^   一个^就表是前一个版本, 如果N个前版本可以用HEAD~N
    
    回退:git reset --hard HEAD^
    回退之后你后悔了又想回到后退之前的那个版本: git reset --hard xxxxxxxxx
    xxxxxxxxx  前面可以通过 git log filename
    
    3commit   <== HEAD
    2commit
    1commit
    
    执行了git reset --hard HEAD^之后
    3commit   
    2commit  <== HEAD
    1commit
    

    git reset:版本穿梭, 可以使用git log查看提交历史,以便确定回退/穿梭到哪个版本

    git reflog:查看命令历史,以便确定要回到未来/过去的哪个版本

    修改

    什么是修改:新增一行、修改几个字符、删除一行、新增文件、删除文件
    Git管理的是修改,而不是文件

    撤销修改:
    没有提交到暂存区时,其实就在工作区: git checkout -- file
    已经提交到暂存区了: 分两步:1)git reset HEAD file 2)git checkout -- file

    删除文件

    手误删除,如何恢复: git checkout -- file
    真删除版本库的文件: 
        1) git rm file
        2) git commit -m 'xxx'
    

    Git远程操作之添加远程库

    远程库即GitHub上的仓库,添加远程库有两种方式

    1)先有本地仓库,后有远程仓库
    git remote add origin git@github.com:JasonMHo/test.git
    git push -u origin master
    第一次使用-u,后面不再使用

    2)先有远程仓库,再clone到本地(最常见的,一般都是先在GitHub上创建仓库,然后开发人员再clone到本地)
    git clone git@github.com:JasonMHo/test.git
    git push -u origin master
    第一次使用-u,后面不再使用

    Git远程操作之添加远程库具体操作步骤

    1.生成ssh

    生成ssh:ssh-keygen -t rsa -C 'xxx@gmail.com'
    进入ssh目录:cd ssh
    将ssh目录下文件id_rsa.pub里的内容拷贝出来

    2.在GitHub上设置ssh的公钥

    1).进入GitHub主页,点击右上角settings

    git02.png

    2).选择SSH and GPG keys进行公钥设置

    git03.png

    3).点击右上角New SSH key新建一个ssh key,Title自定义,将CentOS中生成的公钥拷贝出来,粘贴到Key中,点击Add SSH key添加ssh key

    git04.png

    4).输入GitHub的密码进行验证,点击Confirm password

    git05.png

    5).输入 ssh -T git@github.com测试一下公钥是否正常

    3.在GitHub上创建仓库

    1).点击右上角+,选择New repository新建仓库

    git06.png

    2).填写仓库名称,点击Create repository创建仓库

    git07.png

    与远程库建立连接
    git remote add origin git@github.com:jason/abc_git.git
    git push -u origin master
    git push就是把当前分支(master)推送到远程
    -u:第一次推送到master分支时,要设置了,后续就不需要再使用-u了

    git push origin master

    相关文章

      网友评论

          本文标题:Git与GitHub的简介

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