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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

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