@[TOC]

Git

特点:

  1. 快照记录,而非差异化记录

  1. 几乎所有的操作都是本地执行

三个区域:工作区,暂存区,Git仓库

三种状态:已修改modified,已暂存staged,已提交committed

一、基本操作

全局配置文件(C:/用户/用户名/.gitconfig)

--global

#查看所有的全局配置变量
git config --list --global
#查看指定的全局变量
git config user.name
git config user.email

获取帮助信息

# 想要打开git config命令的帮助手册
git help config
#快速参考手册
git config -h
1.获取Git仓库的两种方式
  1. 将尚未进行版本控制的本地仓库转化为Git仓库

  1. 在需要进行版本控制的文件右键,选git bash here

  1. 在git终端输入git init

  1. 成功后,会在当前目录下生成一个.git的仓库文件

  1. 从其他服务器克隆一个已存在的Git仓库

2.查看文件状态

命令:git status

文件状态

简介

未跟踪(untracked)

不被git所管理的文件

未修改(unmodified)

工作区中的文件内容和git仓库中的文件内容保持一致

已修改(modified)

工作区中文件内容和git仓库中的文件内容不一致

已暂存(staged)

工作区已修改的文件已经放到了暂存区,准备将修改后的文件保存到git仓库

git操作的最终结果让工作区中的文件都处于”未修改“的状态 。


可以使用git status命令查看文件处于什么状态

精简模式显示:

命令:git status -s /git status -short

精简图标

表示状态

??

未跟踪

A

添加到暂存区

M

修改过但没有放入暂存区的文件

M

以修改且已放人暂存区

D

删除文件

3.跟踪新文件

命令:git add 文件名

4.提交更新

命令:git commit

使用git add添加到暂存区的的文件,可以使用git commit命令进行提交,其中-m选项后面的是本次的消息,用来对提交内容进行进一步的描述。

5.对已提交的文件进行修改

提交更新之后再对git文件进行修改,状态会来到已修改的状态

5. 暂存已修改的文件

命令 git add的作用

  • 可以用它开始跟踪新文件

  • 把已跟踪的,且已修改的文件放到暂存区

  • 把有冲突的文件标记为已解决状态

6.提交已暂存的文件

命令:git commit -m “描述”

7.撤销对文件的修改
  • 撤销对文件的修改指的是:把对文件区对应文件的修改,还原成git仓库中所保留的版本

  • 操作结果:所有的修改丢失,且无法恢复!危险性比较高,请谨慎操作!

命令:git checkout -- 文件名

8.向暂存区中一次性添加多个文件

如果需要被暂存的文件比较多,可以一次性将所有新增和修改过的文件加入暂存区

命令:git add .

“.” 代表所有文件

9.取消暂存的文件

需要从暂存区移除对应文件

命令:git reset HEAD 文件名

10.跳过使用暂存区

git标准的工作流程是工作区→暂存区→git仓库,但有时候这么做略显繁琐,可以跳过暂存区,直接将工作区中提交到git仓库,这时候git工作的流程简化为工作区→git仓库

git提供了一个跳过使用暂存区的方式,只要在提交的时候,给git commit 加上 -a 选项,git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤

命令:git commit -a -m “描述信息”

11.移除文件
  • 从git仓库和工作区中同时移除对应的文件

命令:git rm -f 文件名

  • 只从git仓库中移除指定的文件,但保留工作区对应的文件

命令:git rm --cached 文件名

13.忽略文件

一般我们总会有一些文件无需纳入git的管理,也不希望他们总出现在未被跟踪文件列表。在这种情况下,我们可以创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式

文件.gitignore的格式规范如下:

  • 以#开头的是注释

  • 以/结尾的是目录

  • 以/开头的是递归

  • 以!开头的表示取反

  • 可以使用global模式进行文件的文件夹的匹配(global指简化了的正则表达式)

14.global模式

global模式是指简化了的正则表达式:

  • 星号*匹配零个或多个任意字符

  • [abc]匹配任何一个列在方括号中的字符(此案例表示匹配一个a或匹配一个b或匹配一个c)

  • 问号?只匹配一个任意字符

  • 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如匹配[0-9]表示匹配所有0到9的数字)

  • 两个星号** 表示匹配任意中间目录(比如a/ **/z可以匹配a/z,a/b/z或a/b/c/z等)

15. .gitignore 文件的例子
16.提交查看历史

命令: git log

  • 按时间先后顺序列出所有提交历史,最近的提交排在最上面(按q退出查看)

git log

  • 只展示最新的两条提交历史。数字可以按需进行填写

git log -2

  • 在一行上展示最近两条提交历史的信息

git log -2 --pretty=oneline

  • 在一行上展示最近两条提交历史的信息并自定义输出格式

git log -2 --pretty=format:"%h | %an | %ar | %s"

%h 提交的简写哈希值

%an作者的名字

%ar作者修改日期

%an多久以前的方式显示

%s提交说明

17.回退到指定的版本
  • 使用git reset --hard 命令,根据指定的提交ID回退到指定版本(id也可以写HEAD)

git reset --hard <CommitID>

HEAD 表示当前版本号 HEAD^上一个版本号 HEAD^^上两个版本号 HEAD^100上100个版本号

  • 在旧版本中使用git reflog --pretty=oneline 命令,查看操作历史

git reflog --pretty=oneline

二、Github

1.远程仓库的两种访问方式
  • HTTPS:零配置;但是每次访问仓库时,需要重复输入Github的账号和密码才能访问成功

  • SSH:需要进行额外的配置;但是成功配置后,每次访问仓库时,不需要重复输入Github的账号和密码

2.基于HTTPS将本地仓库上传到Github
3.新增内容推送到github

命令:git push

4.SSH的方式访问Github上 的远程仓库

SSH key

SSH key的作用:实现本地仓库和Github之间免登录的加密数据传输

SSH key的好处:免登录身份认证,数据加密传输。

SSH key 由两部分组成,分别是:

  • id_rsa(私钥文件,存放于客户端的电脑中即可)

  • id_rsa.pub(公钥文件,需要配置到Github中)

实现步骤:

  • 生成SSH key

  • 打开Git Bash

  • 命令:ssh-keygen -t rsa -b 4096 -C "邮箱"

  • 连续敲击三次回车,即可在C:/Users/用户名文件夹/.ssh目录中生成id_rsa和id_rsa.pub两个文件

  • 配置生成的SSH key

  • 使用记事本打开id_rsa.pub文件,复制里面的文本内容

  • 在浏览器中登录Github,点击头像 →Setting → SSH and GPG Keys → New SSH key

  • 将id_rsa.pub文件中的内容,粘贴到Key对应的文本框中

  • 在Title文本框中任意填写一个内容,来标识这个Key从何而来

  • 检测Github的SSH key是否配置成功

  • 打开Git Bash,输入如下命令并回车执行 ssh -T git@github.com

  • 成功会显示一个(yes/no)

  • 输入yes之后,如果可以看见hi 用户名……,则成功配置

  • 基于SSH将本地仓库上传到Github

5.将远程仓库克隆到本地

命令:git clone 远程仓库地址

三、Git分支

    • master主分支

(现在将master主分支改成了main主分支,master会引起歧义,上传github后自动更改,下面还以master为主分支称呼)

在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做master的分支。通常我们把这个分支master分支叫做主分支。

master主分支的作用是:用来保存和记录整个项目已完成的功能代码,因此,不允许程序员直接在master分支上修改代码,因为这样做到风险太高,容易导致整个项目的崩溃。

2.功能分支

由于程序员不能直接在master分支上进行功能的开发,所以就有了功能分支的概念。

功能分支是指专门用来开发新功能的分支,它是临时从master主分支上分叉出口的,当新功能开发且测试完毕后,最终需要合并到master主分支上。

3.查看分支列表

命令:git branch

注意:分支名字前面*号表示当前所处的分支

4.创建新分支

基于当前分支,创建一个新分支,此时,新分支中的代码和当前分支完全一样

命令:git branch 分支名称

注意:执行完创建分支的命令之后,用户当前所处的分支还是master主分支

5.切换分支

命令:git checkout 分支名

6.分支的快速创建和切换

命令:git checkout -b 分支名称

-b表示创建一个新分支

checkout表示切换到刚刚的新建的分支上

7.合并分支

命令:git merge 分支名

注意:此命令要在主分支下运行

8.删除分支
  • 删除合并过的分支

  • 命令:git branch -d 分支名

  • 删除没被合并过的(强制删除)

  • 命令:git branch -D 分支名

9.遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行不同的修改,Git就没办法干净的合并它们。此时,我们需要打开这些包含冲突的文件然后手动解决冲突。

  • 打开包含冲突的文件,手动解决冲突之后,在执行如下的命令

  • git add .

  • git commit -m "解决了冲突"

10.将本地分支推送到远程仓库
  • -u表示把本地分支和远程仓库进行关联,只在第一次推送的时候需要带 -u参数

  • 命令:git push -u 远程仓库别名 本地分支名称:远程分支名称

  • 默认情况下远程仓库的名称为origin

  • 最后可写一个本地分支名称,代表远程分支与本地分支名称一样

  • 注意:只有第一次的时候需要带-u ,之后直接git push即可

11.查看远程仓库中所有的分支列表

命令:git remote show 远程仓库名称

12.跟踪分支

跟踪分支是指:从远程仓库中,把远程分支下载到本地仓库中。

  • 保存本地分支和远程分支名称相同

  • git checkout 远程分支的名称

  • 下载的本地分支重命名

  • git checkout -b 本地分支名称 远程仓库名称/远程分支名称

13.拉去远程分支的最新代码

拉取远程仓库 最新代码,保持当前分支的代码和远程分支代码一致

命令:git pull

14.删除远程分支

命令:git push 远程仓库名称 --delete 远程分支名称

Git Bash 下的命令补充

命令

作用

ls

列出目标目录中所有的子目录和文件。

mkdir 仓库名

新创建一个仓库目录

cd 仓库名

打开此目录

pwd

显示当前目录

git diff

比较文件的不同,即比较文件在暂存区和工作区的差异。

cat 文件名

打开文件

git rm 文件名

命令用于删除文件

git switch 分支名

切换分支

git switch -c 分支名

创建一个新分支并切换到该新分支

Git log --graph

看到分支合并图

git stash list

查看储存的工作列表

git stash pop

恢复工作区,同时删除

git stash apply

恢复工作区

git stash drop

删除工作区

git cherry-pick

指定的提交应用于其他分支

四、vscode下使用git

作用

快捷键

命令

下一步

更改主分支的名称

Ctrl+shift+p

>rename

点击重命名分支

新建分支

Ctrl+shift+p

>create branch

点击创建分支

克隆

Ctrl+shift+p

>clone

点击克隆,并粘贴地址

注意:

  • 提交的时候要在上面输入框输入提交信息,否则会一直转

git笔记分享-b站黑马教程学习相关推荐

  1. C++学习笔记(B站黑马程序员C++教程)

    C++学习笔记(B站黑马程序员C++教程) 简介 视频链接https://www.bilibili.com/video/BV1kV411U7Ub?spm_id_from=333.999.0.0 建议用 ...

  2. 微信小程序学习笔记--商城案例(黑马教程)

    目录 起步 运行于小程序 Git 托管到码云 tabbar 创建tabBar 配置tabbar 导航条颜色 首页 网络配置 请求轮播图数据 渲染轮播图 配置小程序分包 点击轮播图,跳转详情页 全局添加 ...

  3. EDA软件—Cadence学习笔记分享(内含安装教程)

    作为流行的EDA工具之一,Cadence一直以来以其强大的功能受到广大EDA工程师的青睐.Cadence可以完成整个IC设计流程的各个方面. Cadence 软件是一个功能强大的系统工具,包括很多功能 ...

  4. C++黑马教程学习,如有侵权,请联系我删除

    C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 例如生活中的模板 一寸照片模板: [外 ...

  5. python学习笔记分享(二十四)python学习笔记分期补充(二)复数,randint与sample,进制转换表,转义字符,二维数组,键,end,pass,迭代器和生成器

    一:复数 Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型. complex(x) 将x转换到一个复数,实数部 ...

  6. 按照黑马教程学习javaWeb出现Property ‘dataSource‘ is requir报错HTTP Status 500 – Internal Server Error——解决方案

    在做网页登录时候,servlet无法连接到数据库,报错提示 Property 'dataSource' is required 具体错误如下: HTTP Status 500 – Internal S ...

  7. 黑马程序员最新版JavaWeb基础教程-学习笔记

    da@黑马程序员最新版JavaWeb基础教程-学习笔记 day06-HTML&CSS HTML HTML(HyperTest Markup Language):超文本标记语言 是一门语言,所有 ...

  8. Python学习笔记(1)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 Linux基础 Python基础 一.Python介绍 0 ...

  9. 廖雪峰Git教程学习笔记

    廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...

最新文章

  1. 2021年秋季学期“大数据能力提升项目”证书办理及领取通知
  2. 网站robots.txt探测工具Parsero
  3. JVM 类加载机制:编译器常量与初始化
  4. Hive表路径修改和分区表数据加载命令
  5. C++ STL究竟有多慢?
  6. 37镇魔曲网页版服务器状态,37镇魔曲网页版各职业攻略分析
  7. Java如何通过WSDL文件来调用这些web service
  8. 一位非常要好的朋友,零基础转行 Python!
  9. 网络安全:HTTP Host 头攻击相关知识介绍
  10. win7系统锁定计算机设置方法
  11. Linux root密码丢失后的解决
  12. 承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变
  13. 对于引用的控件被拒绝访问的解决办法的补充(续)
  14. 中兴、深度、中国电子打造 UOS 统一操作系统:开源、支持龙芯和海思等国产处理器
  15. sap快捷搜索菜单栏
  16. MAC安装linux双系统
  17. Java自学第15天 面向对象(全)
  18. Android中打开浏览器更新App的最新版本
  19. 焊接机器人VS传统焊接的优势
  20. 同步fifo与异步fifo

热门文章

  1. 小红书霸屏引流变现课
  2. F - 心灵之霞(B - 风之守护plus)
  3. 2636652995 揭秘骗子qq
  4. 大一高数下册笔记整理_大一下高等数学知识点[打印版]
  5. 彩虹世界未能连接到服务器,彩虹世界免费资源-彩虹世界新版基遇免费资源官网链接 v1.0预约_手机乐园...
  6. 【cocos2d-x官方文档】Chipmunk(转)
  7. Windows PowerShell™ 用户手册(zz)
  8. [转]如何在word文档里面的小方框内打钩
  9. libreoffice android,LibreOffice Viewer
  10. VSD2PDF源代码,帮做你做好类似百度文库的在线文档浏览器