Git 是一个免费和开源的 分布式版本控制系统,Git易于学习, 占用空间小,性能快如闪电。
目录
Git安装
Git官网:Git
进入官网,选择对应的版本,无脑下一步就好啦!
安装完成后,电脑开始菜单会出现
Git GUI:是git的图形化界面
Git Bash:是git的命令行界面
Git使用
1.设置用户名和邮箱
❓为什么要配置用户名和邮箱?
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址(名字和邮箱都不会进行验证),这样远程仓库才知道哪次提交是由谁完成的。
配置
在Git命令行中依次执行
$ git config --global user.name "用户名" //配置用户名
$ git config --global user.email "邮箱" //配置邮箱
2.创建Git本地仓库
首先cd进入你所需要创建为本地仓库的目录,然后执行 git init
执行成功后,目录中会出现一个.git文件
3.Git的三大区域
当你在git本地仓库创建了一个文件时,它会经历以下三种状态才能被真正提交到本地仓库
工作区:当你在Git本地仓库新创建了一个文件时,他会存在工作区,这个时候他有两个状态,一个是对文件进行修改后的未暂存(unstaged),一个是新创建文件的未跟踪(untracked)
暂存区: 当你对处在工作区的文件执行 git add <文件路径>
后,他会进到暂存区
仓库:当你对出在暂存区的文件执行git commit
后,他会真正意义上进入本地仓库
当你不清楚当前文件处在什么状态时,可以执行git status
指令查看所有未提交(git commit)文件的状态
4.Git常用指令
1.添加到暂存区操作
说明:将文件从工作区移到暂存区
命令 | 含义 |
---|---|
git add [file1] [file2] | 添加指定文件到缓存区 |
git add [dir] | 添加指定目录到缓存区,包括子目录 |
git add . | 添加当前目录下的所有文件到缓存区 |
git add -p | 同一文件的多处变化,实现分次提交 |
一般情况下我们直接用 git add .
,因为这样可以一次性add 所有文件!
2.提交到本地仓库操作
git commit -m "message"
:提交缓存区内容到本地库,message为每个版本的的更新信息,不写别就不知道你这个版本信息是啥了
3.查看历史提交日志
命令 | 含义 |
---|---|
git log | 查看详细的仓库版本信息,包括版本号,作者,创建事件(回滚后只能显示当前版本信息) |
git reflog | 只显示版本号前7位和提交信息(回滚后也能显示全部版本信息)** |
git log -g | 查看详细的仓库版本信息,包括版本号,作者,创建事件(回滚后也能显示全部版本信息) |
这里显示了两次提交的详细信息
前面这一长串是hash算法生成的版本号
4.删除文件
git rm 文件路径/文件名
删除后需要执行 git commit
命令才能生效
5.版本回滚(回退)
首先通过git log
,或者其他查看历史提交日志的命令找到需要回滚的版本
然后
git reset --hard 版本号 //版本号可以不用写全,但最少需要版本号的前四位
当你回滚后,再次执行 git log
,会发现找不到之前提交的版本信息了,只显示了当前这个版本的
如果我们想要查看回滚前的版本信息,这时我们要换成其他两条查看版本日志的指令,那就是
git log -g
或者
git reflog
6.Git分支
为什么要创建分支?
比如我们开发完了一个app上线了,接下那就是迭代功能开发了,如果上线的app出现了一个严重的bug,要你放下手头新功能的开发去解决这个bug,然后在发布一个新版本,如果你要是就在你要迭代功能的项目上进行修改发布的话,那肯定是不行的,且先不谈有没有新的bug出现,时间是也是不允许的,发布的前提还要把新功能完善好才行,要是删掉新功能的代码也不怎么现实,要是业务逻辑少一点还好说,要是多的话那还真是有点无从下手了,所以git的分支就很好的解决了这个问题; 如下图: master就是我们的主代码,一直优化,到v1.4版本发布了,然后接着往下开发v2.0,v2.1版本,但是v1.4版本出现了一个严重的bug,这时候我们就在这个v1.4版本创建一个分支developer来对bug进行修复,到了v1.6版本bug修复好发布出去,然后在跟原来的master主代码进行合并一下把代码添加到v2.1版本就OK了,剩下就接着迭代开发了;
原文章链接:Git分支的意义和使用方法_张木期的博客-CSDN博客_git分支
6.1.创建分支
git checkout -b 分支名
查看当前分支
git branch
6.2.切换分支
git checkout 分支名
6.3.合并分支
git merge
当我们新建的分支完成了需要的工作之后,需要把分支所修改的部分整合到主分支上,那么我们就需要合并分支了
首先:切换到主分支(也就是master或者main)
然后执行:git merge
就合并啦!
7.常用的两种用户认证方式HTTPS和SSH
代码托管平台如 GitHub、Gitee等,使用 Git 作为版本控制工具,当用户在本地对远程仓库做一些操作时,平台需要认证该用户的账号是否有权限对该 repository 做操作,一般都提供两种认证方式 https 和 ssh
远程仓库一般支持两种协议:SSH和HTTPS,SSH协议只认机器,HTTPS协议只认账号;也即为:如果使用SSH操作远程仓库的话,我们需要使用公钥和私钥对来做权限的认证,如果使用HTTPS操作远程仓库,则需要使用账号密码来做权限的认证。无论是公钥私钥对,还是账号密码,都只做权限的认证;但是远程仓库里需要记录这些提交记录是由谁来完成的;所以我们需要给本地的git设置用户名和邮箱,用于从本地仓库向远程仓库提交记录时,在远程仓库记录下这些操作是由谁来完成的。
开发中一般SSH的认证方式用的比较多,因为不需要每次操作都进行认证
7.1.HTTPS
在进行一些例如push的操作时,平台会以验证账号密码的形式判断你是否有权限进行操作
7.2.SSH
clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
配置Git SSH Key
首先在git命令行中执行
ssh-keygen -t rsa -C "邮箱"
然后一路按回车Enter期间有按y确认就行了
出现这个类似气泡框框就成功了!
这红线部分是ssh key保存的路径,我们打开看看
打开 id_rsa.pub文件复制里面的内容进Github或者Gitee里面配置就好啦!
Gitee配置
进入主页点击设置
GitHub
进入主页点击Settings
点击 SSH and GPG keys,会出现右边的内容,然后点击New SSH key
8.远程仓库操作
1.git clone(克隆)
git clone 仓库url地址
能够直接将远程仓库clone到本地
2.git pull
在克隆到本地仓库后,cd进入仓库路径,即可执行 git pull
指令进行本地仓库的更新(其实就是将远程仓库进行git fetch
(抓取)和在本地进行 git merge
(合并分支))
好处:在和小伙伴合作开发时,不用每次开发都去clone一份小伙伴修改后的代码,而是只更改修改的部分,节约时间
git pull
3.git push
将工作后的本地仓库代码合并到线上仓库
git push
4.合并冲突
❗注意:当你远程仓库被修改或者添加文件后,如果你没有及时进行git pull获取最新修改后的版本,则会导致合并冲突(合并冲突是防止进行协同开发时,git push后将小伙伴的代码给覆盖了),无法进行 git push操作
类似于这样的信息
解决方法:先git pull获取最新版本再进行git push,如果有文件和小伙伴修改的地方冲突了的话,那么就和他沟通,进行调整后再git push(防止开席)
9.Idea操作Git
9.1.导入远程仓库
idea中点击左上角 File-->New-->Project from Version Control
填写仓库的url(https和ssh的都可以)
设置本地仓库(相当于命令行操作中clone存放的位置)
导入完成后会出现以下几个按钮
9.2.基本操作
从左到右依次代表 git pull ,git commit ,git push
10.建议
git在进行文件更改,添加,删除时,都需要一条龙执行 git add .
git commit -m "版本信息"