[git专题-01] git基础入门

Git概念及安装

  • Git为分布式版本控制系统,相比较于集中型的版本控制系统最大的特点是记录快照而非差异比较。使用Hash散列来记录快照。

  • Git使用中的几个概念:

    • 本地仓库:存在于本地的版本管理仓库,

    • 远程仓库:对本地仓库的一个备份,另可以作为多人协作的类似共享仓库的概念。

    • 三个工作区:工作区(独立的内容,在此基础上修改或者新增),Git仓库(项目元数据和对象数据库的地方),暂存区域(是一个文件,保存下次将提交文件列表信息,被称为索引)。

  • Git支持在Windows,Linux,macOS运行,在Ubutun系统下安装使用:sudo apt install git命令即可。

  • 安装完成后配置用户信息,设置的配置文件会在~/.gitconfig文件中。该配置文件针对该用户下的建立的所有Git仓库都有效。常用的配置信息如下(配置一次即可):

    # 配置提交时的用户名和邮箱
    ~ git config --global user.name  "YuanJianfeng"
    ~ git config --global user.email "93628775@qq.com"
    # 配置颜色自动以及git使用时的默认编辑器为vim
    ~ git config --global color.ui auto
    ~ git config --global core.editor vim
    # 解决git log命令显示时的提交注释中文乱码以及中文文件名16进制显示问题
    ~ git config --global i18n.commitencoding=utf-8
    ~ git config --global i18n.logoutputencoding=utf8
    ~ git config --global core.quotepath false
    

Git常用命令

  • 建立仓库:可使用以下两种方式:

    #1 在现有目录中初始化仓库。会在该目录下生产.git目录,--bare参数直接生成仓库,用在仓库服务器,之后与远程仓库关联
    git-demo1:$ git init 
    git-demo1:$ git remote add origin git@gitee.com:ccczyl2006/git-demo1  #与远程仓库关联
    git-demo1:$ git push -u origin master    #推送到远程仓库的master分支并建立关联。注意仓库必须本地有提交
    
    #2 远程克隆现有的仓库。会在当前目录下创建仓库名对应的目录.建立spring-framework目录
    ~ git clone https://github.com/ccczyl2006/spring-framework   
    
  • git的工作流程:git add [参数]命令增加工作区文件到暂存区。

    #1 git add 用于增加未被纳入版本库的文件和自上次提交后的文件有新的修改的文件到暂存区 
    #1.1 增加具体的文件到暂存区
    git-demo1:$ git add README
    #1.2 当前版本库下的所有文件
    git-demo1:$ git add .
    
  • git commit -m '简短说明':该命令把暂存区中的文件提交到版本库。

    git-demo1:$ git commit -m 'first commit'
    [master 00e30ba] first commit
    1 file changed, 6 insertions(+)
    create mode 100644 index.html
    
  • git status::显示git仓库的状态。下述输出表示文件还未纳入版本系统管理。

    # git status: 显示git仓库的状态, 带参数-s表示使用简短的信息显示git仓库状态。??表示未纳入版本库,M表示文件修改.在oh-my-zsh的git插件支持下,两命令的简写为gst和gss(带-s参数)
    git-demo1:$ git status
    On branch master
    Initial commit
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            README
    nothing added to commit but untracked files present (use "git add" to track)
    
  • git log:查看历史提交信息,支持格式化信息显示:

    • -p选项:用来显示每次提交的内容差异。-n选项:n代表数组,显示最近n次的提交。
    • -stat选项:提交的简略的统计信息。--oneline:每一次提交单行显示。
    • --graph:图标方式显示,存在分支合并的情况下显示非常直观。
    • --pretty选项:使用不同默认格式的方式展示提交历史.包括以下子选项:oneline, short, full, fuller, format
  • 撤销操作

    • 新增文件后使用命令git add已提交到暂存区,但项目的实际需求是该部分文件不需要纳入版本控制。

      git-demo1:$ git add ./idea
      git-demo1:$ git reset HEAD ./idea   #该部分文件去除版本控制
      
      # 在版本库根目录下新建文件.gitignore控制哪部分文件不需要版本控制 https://www.gitignore.io/
      # 语法如下:
      # .idea/
      
    • 已纳入版本库管理,修改后未暂存,丢弃修改。

    git-demo1:$ git checkout -- README.md   #从版本库中检出 特别注意需要 
    使用--加文件
    
    • 已纳入版本库管理,修改后已暂存,想丢弃这部分修改。实际操作先从暂存
      区删除,在从版本库检出。

      git-demo1:$ git reset HEAD README.md    #先从暂存区中撤回
      git-demo1:$ git checkout -- README.md   #从版本库中检出覆盖工作区的文 
      件。特别注意需要使用--加文件
      
    • 提交后发现漏掉了几个文件没有提交,带--amend参数再提交一次会被认为为同一次提交。

      git-demo1:$ git commit --amend
      
    • 版本回退功能。使用命令git reset HEAD [版本Hash]。内部使用HEAD指针指示当前指向的版本,所以可以使用以下方式回退版本:

      # 回退到当前指向的版本
      git-demo1:$ git reset --hard HEAD
      # 回退到上一版本,HEAD^ ,2个^^代表回退到上两个版本.~n代表回退n个版本
      git-demo1:$ git reset --hard HEAD^
      # 回退到指定hash值的版本,hash值可以取前6位
      git-demo1:$ git reset --hard 96ae43
      
      # 如果又想回退到最新的版本 因为使用git log看不到最新版本的hash 所以首先要使用git reflog找到历史提交的最新版本的hash
      git-demo1:$ git reflog
      git-demo1:$ git reset --hard 16a4585
      
      
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 与常用的版本控制工具 ...
    闽越布衣阅读 2,735评论 0 18
  • 大纲: 一、前言 二、概述 三、在Windows上安装Git 四、创建本地仓库 五、本地仓库管理详解 六、总结 注...
    首席架构师阅读 359评论 1 3
  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,403评论 0 3
  • 一 Git配置和仓库初始化 下面会介绍Git的使用,每个小节里会讲解各个功能在命令行中的实现方式,并在每小节的最后...
    Happioo阅读 3,322评论 0 5
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,396评论 0 7