Git入门及常用方法

Git学习笔记

关于 Git 的背景知识

  • Git 是什么

    Git——分布式版本控制系统,Linus使用C编写

  • Git 用来做什么

    协同开发、开源程序、社会化编程

  • Git协议

    • 9418端口
    • 类似于SSH服务,但是访问无需任何授权
    • 优点:
      • 传输协议最快——适合项目庞大并不需要写授权
      • 使用SSH相同数据传输机制,省去加密和授权的开销
    • 缺点:缺乏授权机制、架设Git服务较为复杂、端口限制
  • Git原理

    • 指向修改、不指向提交
    • 内容寻址(content-addressable)文件系统
    • Plumbing&Porcelain(底层和高层命令):使用Unix风格
    • Git对象:核心——存储键值对、树对象
    • Git References:类似于书签
    • Packfiles:zlib压包
    • The Refspec
  • 工作区、版本库

    • 工作区(Working Directroy):即本地工作目录文件夹
    • 版本库(Repository):在工作区中的隐藏目录.git文件夹中
      • 暂存区(Stage/Index):接收工作区add操作的工作内容,并准备commit提交到版本库中
      • 分支(master&dev):接收commit提交的工作内容,新建分支相当于新建了一个dev的指针
      • 指针HEAD:每次提交,HEAD指针即指向分支的最后一个版本,如果分支提交,但是主分支的master的指针并不变化,变化的只是HEAD指针

Git 基本使用命令以及方法

Git使用前的准备

  • 设置初始信息(邮箱以及姓名)

    $ git config --global user.name bijian
    $ git config --global user.email bijian127@live.com
    ##生成.gitconfig文件,内含上述配置信息,默认会在用户目录下
    
  • 使用高亮确保命令的可读性

    $ git config --global color.ui auto
    
  • 初始化当前目录

    $ git init
    

Git 常用命令

  • 工作区提交至暂存区

    $ git add filename
    
  • 暂存区提交至版本库

    $ git commit -m <message>
    ##message为提交的附加信息
    
  • 查看仓库状态

    $ git status
    
  • 查看修改内容

    $ git diff
    
  • 参看仓库提交记录

    $ git log
    ##格式化视图添加“--pretty=online”
    
  • 版本回退

    $ git reset --head HEAD^
    ##退回到上一个版本,HEAD^^退回到上上个版本
    ##退回到多个以上版本HEAD~100
    ##也可以使用版本号前缀即commit id
    
    
  • 查看历史记录

    $ git reflog
    
    
  • 撤销修改

    ##未提交到版本库,即未commit
    $ git checkout -- filename
    ##一种是readme.txt自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
    ##一种是readme.txt已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
    $ git reset HEAD filename
    ##未commit之前,也可以使用reset退回版本
    
    
    ##已经commit至版本库中,可以使用退回版本的方法
    $ git reset HEAD filename
    
    
  • 删除文件操作

    ##从版本库中删除该文件,那就用命令git rm删掉,并且git commit
    $ git rm filename
    $ git commit -m <message>
    
    
  • 用版本库里的版本替换工作区的版本

    $ git checkout
    
    

Git连接远程仓库

  • 生成ssh密钥供本地与GitHub使用

    $ ssh-keygen -t rsa -C "youremail@example.com"
    
    
  • 将公钥填入GitHub,进入account setting,ssh key,添加公钥内容

  • 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

  • 本地的仓库下运行命令

    $ git remote add origin git@github.com:useremail/learngit.git
    
    
  • 把本地库的所有内容推送到远程库上

    $ git push -u origin master
    ##由于远程库是空的,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
    $ git push origin master
    
    

Git从远程仓库克隆

  • 生成git协议链接

  • 从远程仓库收取克隆

    $ git clone git@github.com:michaelliao/gitskills.git
    
    

Git分支

  • 查看分支

    $ git branch
    
    
  • 创建分支

    $ git brach <devname>
    
    
  • 切换分支

    $ git checkout <devname>
    
    
  • 创建+切换分支

    $ git checkout -b <devname>
    
    
  • 合并分支至当前分支

    $ git merge <devname>
    ##强制禁用Fast forward,保存分支信息
    $ git merge --no--ff -m "commitmessage" dev
    
    
  • 删除分支

    $ git branch -d <devname>
    $ git branch -D <devname>
    ##使用强制删除,未提交的分支
    
    

Bug分支

  • 建立临时分支,保存分支工作

    $ git stash
    
    
  • 查看分支工作暂存

    $ git stash list
    
    
  • 恢复分支工作

    $ git stash aplly
    ##恢复之后stash内容不删除,需要使用以下命令
    $ git stash drop
    
    $ git stash pop
    ##恢复同时将stash内容删除
    
    $ git stash apply stash@{0}
    ##恢复指定stash
    
    

GitHub相关知识

Issue

为了跟踪BUG及尽心软件相关讨论,进而方便管理,创建了Issue

  • 使用情形:
    • 发现软件bug并报告
    • 有事向作者提问、探讨
    • 实现列出今后准备实施的工作任务等

使用MarkDown语法格式编辑

Pull Request

用户修改代码之后向对方仓库发送采纳请求的功能

Wiki

同样可以使用MarkDown语法进行编辑




参考资料:
《GitHub入门与实践》人民邮电出版社https://item.jd.com/11733256.html#none
廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/896043488029600

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装Git Git的下载地址:Git官网下载地址 Git本地仓库和命令 配置用户 下载完Git后,右键会有一个Gi...
    TokyoZ阅读 4,538评论 1 7
  • 以下笔记主要参考gitgot,大致了解git使用和原理。 第一部分我们从个人的视角去研究如何用好Git,并且揭示G...
    carolwhite阅读 2,439评论 0 1
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,470评论 0 7
  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 1,962评论 1 8
  • 简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 与常用的版本控制工具 ...
    闽越布衣阅读 2,776评论 0 18