小白都看得懂,Git在实际开发中的使用
(转载请标注)
先介绍下概念
Git称为代码版本管理仓库,可以记录你整个项目从无到有的各个阶段,实际开发中完成测试版开发后,经常会有某个功能或者模块需要修改逻辑(一般看客户心情)。由于代码之间存在着各种联系,你改动的代码就可能会影响原来的整个项目,报错啥的。
有代码仓库的好处就是今天你改的东西,即使是明天报错了,你依然可以回退到改动之前。而且Git日志中可以查看改动的内容,很好的帮助我们找出bug
把代码比作钞票,银行就是大仓库,存钱进去都有各种记录,比揣在兜里更安全
1.安装
-
git官方版本(基础版)
- windown 32bit git下载地址
- windows 64bit git下载地址
- 打开小黑窗终端
git --version
查看版本,有则说明安装成功 - 这时候你的鼠标右键菜单会多出一个Git Bash Here 选项,打开它,通过输入
git init
命令可以在任意文件下创建仓库,这个仓库可以管理同级文件。文件夹名为.git的就是仓库,他是一个隐藏文件,如图1
图1
-
说实话基础版用命令操作非常不适合新手,安装成功后可以直接在VS Code上使用很方便,左侧面板有个源代码管理就是。快捷键ctrl+shift+G,如图2
- 另外有个叫小乌龟的工具挺好用的,带汉化包,附上
微云链接:https://share.weiyun.com/mMDBCtAH 密码:cc6k79
不想了解原理的同学可以直接跳到标题5小乌龟的使用
2.开始进入正题,如何使用
这张图就是整个Git工作的架构,我解释下各个关键词的含义,这些关键词对应图2中的VSCode的选项
-
workspace是工作目录,如果把代码比作钞票,他就是是现在拿在手里的,准备花掉或者存起来
-
index是暂存区,是你揣兜里的钞票,暂时不花,在工作目录中运行Git Bash Here窗口,通过
git add 文件名
命令暂存某个文件,git add -A
暂存当前目录所有文件。注意:只有被add添加了的文件才受仓库管控。git克隆下来的代码都受管控。如图3
文件带这种小标识的被管控了,红标识表示未保存到仓库
VSCode上点暂存如下图点这个+号就可以了
-
Repository是本地仓库,是你放在家里的钞票,暂存之后的文件通过
git commit -m 文字说明
命令提交到本地仓库 -
Remote是远端,提交到本地仓库的代码通过
git push
命令推送到远端,也就是把钱存到银行,现在你就可以在其他电脑上拿到你远端的代码了,使用git clone 仓库链接
克隆代码,克隆的时候是最新的代码,但是过几天代码更新了,你想要拿到最新的代码只需使用git pull
拉取更新即可
小型项目平常用的其实就这几个操作,我查看日志用的小乌龟或者gitk
命令,下面的内容是拓展
3.git命令拓展
git clone url #克隆url路径的代码
git init #初始化仓库
git add . #添加当前所有到暂存区
git commit -m "备注" #提交暂存区的内容
git branch name #创建名为name的分支(delete -> -d)
git checkout 分支 #切换分支(build -> -b)
# 从远端拉取最新的代码,当你合并分支的时候,可能其他同事又提交了新的内容,所以最好先拉取一次最新的代码
git pull origin next
#git fetch # 不自动合并(当同一远端分支由多人控制时)
# 合并(如果合并发现有冲突,可以使用可视化工具查看冲突的代码,如:pycharm、BCompare4
git merge next-dev
# 将本地代码推送到远程
git push origin next:next # ”:“前面的是本地分支的名字,”:"后面的是远程分支的名字,同名可省略一个
#先pull再push
#在你开发过程中,你的同事可能也在改代码然后他提交了没通知你,你直接git push很容易造成代码冲突
`git log` #可以查看提交历史
`git show` #当前位置
`git reflog` #记录你的每一次命令 ,可回退
`git rm 文件名 ` #移出版本库
`git status` #查看所有文件状态(提交与否...)
HEAD是什么
Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交 , 上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
熟练的情况下可以通过改变HEAD指针来实现版本控制,检查BUG,暂不深入
commit id : 节点唯一ID,可以checkout改变HEAD切换到某个id去查BUG(分离态,不熟练不建议)
git reset --hard commit_id #重置到指定commit id
-
可视化查看树状图
- bash命令面板显示git树
git log --graph --decorate --oneline --all
- bash命令显示日志窗口
gitk
- git reflog 显示所有的操作,误删误操作救命神器
- bash命令面板显示git树
-
远程仓库生成密钥
- 在C/用户/username下写个.ssh
- bash命令
ssh-keygen -t rsa
- pub公钥,rsa私钥,把公钥内容放到gitee个人设置里面
4.关于多分支(大型项目)
- 项目开始,从主分支创建拉取自己的分支 / (fork到自己仓库)
- 克隆远端代码到本地,作为本地主分支
- 开发过后,代码保存到本地主分支上
- 多人项目在推送到远端之前一定要pull拉取更新一下代码
- 如果出现两个人同时改了同一处代码,这时就需要解决冲突,VSCode的源代码管理点开冲突文件,会有标记出冲突的地方,附带相应的选项,问你保留哪一块代码,鼠标选择就行了
- 推送代码之后给主分支人员 / (fork源)发送pullRequest请求
5.小乌龟的使用
小乌龟安装好后会自动添加到鼠标右键菜单TortoiseGit中
小乌龟日常使用:
1.在设置中,添加一个远端地址,填上仓库URL即可。远端用gitee或GitHub可以创建仓库,拿到空仓库的HTTPS链接(如上图)
2.版本库可以自己右键创建,但是好多项目框架会自动创建的,比如Vue
3.选择想管控的文件,右键,TortoiseGit添加
4.提交管控文件到本地
5.推送本地管控文件到远端
6.拉取(获取相当于更新)
- 合并或者报错时右键看报错文件的日志,比较修改前后差异
- 解决冲突:远端有master和dev分支。现在我想把dev合并到master上,但是在同一个地方,两者都有修改,这就需要你做出选择;可以通过gitee的pullRequest,采用WEB IDE解决冲突,当WEB IDE解决不了,就需要把master和dev都拉取到本地,在master上吞并,提示冲突后,右键调出GIT解决冲突。我更加推荐在VS Code 内解决
- 还原:在日志里面找到想要的版本可以右键还原到该版本,或者git log 命令找到想要的版本id(推荐使用上面的可视化命令找)
- 切换/检出:比较重要的是切换到remote/origin/分支 ,可以直接拉取远端对应分支的新代码,解决冲突时用
- 合并:吞并
4.Git Bash Here 是基于Linux类型的命令
linux基础
1 )、ls(ll):都是列出当前目录中的所有文件,只不过ll列出的内容更为详细。
1 )、pwd:当前路径。
2 ) 、touch :新建一个文件如touch index.js 就会在当前目录下新建一个index.js文件。
3 ) .rm:删除一个文件, rm index.js就会把index.js文件删除。
4 ) 、mkdir:新建一个目录,就是新建一个文件夹。
5 ) 、rm -r:删除一个文件夹, rm -r src删除src目录
6 ) 、mv移动文件, mv index.html src index.html是我们要移动的文件, src是目标文件夹,当然,这样写,要两个文件夹在同一目录下。
7 ) .reset重新初始化终端/清屏。
8 ) .clear清屏。
9 ).history查看命令历史。
10 ).exit退出。
11 )、#表示注释