这个里面包含了git的基本概念、git的命令、关于项目的本地仓库的创建
所谓的GIT就是用于存档,备份,允许我们的代码有容错的机会,比如:玩游戏魂斗罗小游戏前几关很简单很容易,到后面越来越难,如果没有存档机制我们几条命用完之后,再重新去跑、玩,会非常非常浪费时间,这样用户体验就很不好,如果我们给1-10关做一个存档,后面会从11关开始,这样可以提升我们的游戏体验,减少无用的时间浪费,这样就是游戏存档的意义,接下来我们写代码?一次性正确的写完所有功能难度很大,如果没有存档机制,代码突然被误删了、大量写错的情况下、多人协助的情况下,这样我们需要重写备份,所以我们写代码需要存档机制且这个存档意义是重大的。
什么是GIT?
git是一个版本控制系统,作用域代码备份(支持多人协作),且是免费开源的的软件
git下载安装
下载地址:Git - Downloading Package
注意点:不要安装在中文目录下
装好后:右击查看有如图就是装好,有Git GUI Here与Git Bash Here
如何操作git
在刚开始的时候,我们创建的项目是没有被GIT管理的,当我们希望使用git来管理当前的项目
步骤一:打开当前的项目文件夹,在文件夹内右击如图:
步骤二:进行初始化
初始化命令
git init
在文件内会有如图文件:如没有在文件夹上方的查看按钮,将隐藏项目打开即可
注意:不要去修改.git文件夹下的任意东西
git有三个区:工作区 => 暂存区 => 仓库区
1、工作区:就是书写代码的地方,
2、暂存区:暂存提交代码的地方
git中无法直接从工作区提交到仓库区里面去,必须经过暂存区
目的就是避免误操作
3、仓库区:代码永久存储区,每次存入git仓库后,会生成版本号,可以任意回退到任何一个具体版本
准备工作:配置提交者信息
我们到公司里面第一时间要进行的配置(user.name是名字用英文)(user.email是邮箱)
配置提交:git config --global user.name heiwuchang
git config --global user.email xxxxxxxx@163.com
当配置好后,如何去查看配置信息呢?如下就是配置成功了
查看配置:git config --list
git 基本命令
将工作区代码提交到暂存区
git add .
将暂存区代码提交到仓库区
git commit -m ‘这个里面放的提交说明’
查看文件状态,就是查看当前文件是存在工作区还是暂存区
git status
注意:简写命令:git status -s
查看提交日志信息
git log
注意:简写命令:git log --oneline
** 使用命令:**git reflog 可以查看作用版本的信息
git add 的作用:将工作区文件添加到暂存区
将index.html添加到暂存区
git add index.html
将css目录下所有的文件添加到暂存区
git add css
将当前目录下所有的js文件添加到暂存区
git add *.js
git commit 的作用:将暂存区文件添加到仓库区
将文件从暂存区提交到仓库区
git commit -m "放提交的说明"
如果不是一个已经暂存过的文件,可以快速的提交,如果是未追踪的文件及时未提交过的文件,那么这个命令不会生效
git commit -a -m "提交说明"
只会修改最近的一次提交说明,如果提交说明不小心输错了,可以使用这个命令
git commit --amend -m "提交说明"
git reset 的作用:版本回退,将代码恢复到已经提交的某一处版本中
命令:git reset --hard 版本号
注意:可以回退到任意版本,想回到哪个版本就输入哪个版本的版本号
git忽略文件
在仓库中有些文件不想被git管理,可以通过配置从而达到忽视一些文件。
步骤一:在仓库中新建一个.gitignore文件(固定的)
步骤二:将不要被git管理的文件路径,添加到.gitignore中
git分支
什么是分支?为什么要开发分支?那分支的本质又是什么?
作用:分支的存在,可以保证功能开发的独立性。
为了避免与其他人的代码冲突,所以创建自己的分支,完成对应的功能。比如:科幻电影里面的平行宇宙,当你正在电脑前努力学习git的时候,另一个你正在另一个平行宇宙里努力学习Java。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了git又学会了Java!
分支实质上就是一个指针,指向的是某个提交的版本;每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的版本
注意:git第一次提交时,就有了一个master的主分支,指向第一个提交版本
git分支相关命令
1、创建分支
git branch 分支名
2、查看分支/可查看所有分支
git branch
3、切换分支
git checkout 切换的分知名
4、合并代码,在当前的分支上,需要把别的分支合并此分支上
git merge 分支名
5、删除分支
git branch -d 需删除的分支名
注意:不能在当前分支删除当前分支,需要切换到其他分支才能删除。
注意:master分支是可以删除的,但是不推荐那么做。
6、创建并切换分支(等价于创建分+切换分支)
git checkou -b 分支名
git合并分支冲突
我们在公司容易遇到多个分支,并且修改到了同一个文件,容易造成冲突的问题。
合并之后出现的冲突并解决冲突:
步骤一:master 分支 —完成了两次提交 git add . + git commit -m ‘’
步骤二:基于主分支的代码,创建两个分支login/register
git branch login
git branch register
步骤三:切换到其中一个分支 - login
git checkout login
步骤四:在login的分支上完成对应的代码,并提交 git add . + git commit -m ‘’
步骤五:切换到其中一个分支 - register
git checkout register
步骤六:在register的分支上完成对应的代码,并提交 git add . + git commit -m ‘’
步骤七:切换到主分支
git checkout master
步骤八:合并其他的分支
git merge login
git merge register
在这合并完后会出现合并的冲突
步骤九:手动处理 -- 选择想要保留的代码
步骤十:重新再提交 git add . + git commit -m ‘’
git远程仓库
什么是GIT远程仓库?
就是托管在网络中,你项目的版本库,且支持多人协作,共同一起管理远程仓库。
解决了什么问题:
仓库备份(远程备份不易丢失)
多人协作(远程仓库同步代码)
git代码托管平台
专门用于 存放远程仓库 的网站平台,就是代码托管平台
常见的代码托管平台:
gitee 码云,国产开源项 目托管平台。免费,访问速度快、纯中文界面、使用友好
gitee 码云,创建远程仓库:
新建仓库
输入仓库名
创建(不勾初始化!!!)
新建右上角仓库
输入仓库名
不勾初始化!!!
点击创建
SSH免密码登陆
git支持多种数据传输协议:
https协议:蒋鹏/test 需要输入用户名和密码
ssh协议:git@gitee.com:jepsonpp/test.git 可以配置免密码登录
注意:在实际公司开发中,ssh 的方式更为常见!更加安全可靠!
每次push或者pull代码,如果使用https协议,那么都需要输入用户名和密码进行身份的确认,非常麻烦。
github为了账户的安全,需要对每一次push请求都要验证用户的身份,只有合法的用户才可以push
使用ssh协议,配置ssh免密码,可以做到免密码往github推送代码
ssh秘钥的作用
ssh key 的作用:实现本地仓库和 gitee平台 之间免登录的加密数据传输。
ssh key 由两部分组成,分别是:
① id_rsa(私钥文件,存放于客户端的电脑中即可)
② id_rsa.pub(公钥文件,需要配置到 gitee平台 中)
私钥加密的信息,只能通过公钥解密。公钥加密的信息,只能通过私钥解密。安全性高。
SSH免密码登录配置
生成ssh key:一台电脑只需要配置一次秘钥
步骤:
打开 Git Bash
粘贴如下的命令 ssh-keygen -t rsa
- 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和id_rsa.pub 两个文件
使用记事本打开 id_rsa.pub 文件,复制里面的文本内容
粘贴配置到 gitee码云 -> 点击头像设置 -> 选中左侧安全设置下ssh 公钥 中即可
tips: mac获取公钥 mac 如何查找ssh key - 掘金
git push 将代码提交到远程仓库
作用:将本地仓库中代码提交到远程仓库
语法:git push 仓库地址 分支名 将代码提交到远程仓库对应分支
仓库地址如图:
例子:git push git@gitee.com:jepsonpp/test.git master
git remote删除分支
每次push操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名
给远程仓库设置一个别名
git remote add 仓库别名 仓库地址
git remote add origin git@gitee.com:jepsonpp/test.git
# 删除origin这个别名
git remote remove origin
演示命令:
首次提交需要
git push -u 仓库别名 分支名
tips:-u 可以记录push到远端分支的默认值,将来 git push即可
本地分支比如master和远程仓库建立关联,并且以后提交该分支,直接通过git push,一个本次仓库的分支只需要建立一次即可
git clone 克隆代码
作用:克隆远程仓库的代码到本地
语法:git clone [远程仓库地址] 文件名(test)
如果只想克隆分支:git clone -b 分支名 [远程仓库地址] 文件名
git clone git@gitee.com:jepsonpp/test.git会在本地新建一个test文件夹
在test中包含了一个.git目录,用于保存所有的版本记录,同时test文件中还有最新的代码,可以进行后续的开发。
git克隆默认会使用远程仓库的项目名字,也可以自己指定。
命令:git clone [远程仓库地址] [本地项目名]
tips: git branch -a 查看分支
git pull拉取更新
作用:拉取更新,将远程的代码下载合并到本地的分支
语法:git pull [远程仓库地址] [分支名]
简写:git pull
通常在push前,需要先pull一次。
注释逻辑:
本地仓库和远程仓库是一对一的关系,一个本地仓库 只对应一个远程仓库
比如:张三新创建了一个项目
后台管理系统
1、初始化仓库——提交到本地仓库——创建一个远程仓库——承载/管理本地的代码
移动端的商城项目
1、初始化仓库——提交到本地仓库——再去创建一个远程仓库——装载你当前的商城项目
是一对一的关系
下载远端分支本地
命令:
git checkout -b 分支名 注意点: 创建的分支名要和远端分支名相同
git pull origin 分支名
先在本地建立一个分支,并切换到该分支,然后从远程分支上同步代码到该分支上,并建立关联
后续拉取该分支的更新,直接通过 git pull 即可
注释逻辑:
已经存在的本地仓库 李四 lisi
1、将远程仓库中pay分支的代码合并到本地仓库中master分支
现在处在master分支 直接通过git pull origin pay 远程仓库的分支名
进行分支代码的拉取...
2、将远程仓库中的reg分支的代码拉取到本地仓库中的reg分支
问题本地根本没有reg分支?
解决:2.1创建并切换到reg分支
git checkout -b reg
2.2拉取
git pull origin reg
git checkout -t origin/develop #远端分支名和本地新建分支名同名
后续拉取该分支的更新,就是切换到该分支,git pull origin 分支名
Git基本常用命令如下:****
git add .
git commit -m "提交信息"
git commit -a-m "快速提交(前提是已被追踪过 经历工作区到暂存区到工作区的过程)"
git log 查看日志
git log --oneline 简化日志
git status 查看文件状态
git status -s 简化查看文件的状态
git init 初始化仓库 一个项目
git config GIT配置
git reset --hard 版本号 !!不要不些版本号!!
git reflog 查看所有日志
.gitignore 忽视git文件
cls和clear 清除命令
cd(changedirectory) 文件路径:返回上一级文件 cd返回下一级(这不是git命令,而是终端命令)
dir/ls可以拿到文件夹的东西
git --help / git help -a 可以提示命令
git remote set-url origin '这里是你要修改的远程仓库地址' 修改提交代码的远程仓库地址
总结:
将代码提交到远程仓库
创建一个远程仓库 - 一个远程仓库 对应一个本地仓库 (项目) 1v1的关系
将本地仓库中的代码提交到仓库区
git init
git add .
git commit -m '提交说明'
提交到远程仓库
设置别名
git remote add 仓库别名 仓库地址
提交代码 push (将本地代码推到远程仓库)
git push origin 分支名
git push -u origin 分支名
-u 建立关联 将本地仓库的当前分支和远程仓库建立关联 (只需要建立一次即可)
后续该分支就可以通过git push进行提交
刚进入公司, 想获取公司代码
克隆代码 git clone 仓库地址 可选的文件夹的名字
同事刚提交了代码到远程, 想获取代码 (差异化更新)
git pull
需求: 将远程仓库的其他分支下载到本地
创建并切换到(同名)分支 git checkout -b 分支名
进行更新 git pull 别名 分支名
版权归原作者 bianxuehua 所有, 如有侵权,请联系我们删除。