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 [email protected]
    ##生成.gitconfig文件,内含上述配置信息,默认会在用户目录下
    
  • 使用高亮确保命令的可读性

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

    $ git init
    

Git 常用命令

  • 工作区提交至暂存区

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

    $ git commit -m 
    ##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 
    
    
  • 用版本库里的版本替换工作区的版本

    $ git checkout
    
    

Git连接远程仓库

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

    $ ssh-keygen -t rsa -C "[email protected]"
    
    
  • 将公钥填入GitHub,进入account setting,ssh key,添加公钥内容

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

  • 本地的仓库下运行命令

    $ git remote add origin [email protected]:useremail/learngit.git
    
    
  • 把本地库的所有内容推送到远程库上

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

Git从远程仓库克隆

  • 生成git协议链接

  • 从远程仓库收取克隆

    $ git clone [email protected]:michaelliao/gitskills.git
    
    

Git分支

  • 查看分支

    $ git branch
    
    
  • 创建分支

    $ git brach 
    
    
  • 切换分支

    $ git checkout 
    
    
  • 创建+切换分支

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

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

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

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入门及常用方法)