一、git介绍
1.git是什么
是一种用于协同开发的版本管理工具
2.git能干什么?
(1)完成 协同开发 项目,帮助程序员整合代码 帮助开发者合并开发的代码 如果出现冲突代码的合并,会提示后 提交合并代码的开发者,让其解决冲突 (2)2种Git软件:SVN、Git(都是同一个人的个人项目) svn(集中式管理)--->现在基本不用了 git(分布式管理、协同开发、版本管理)--->推荐使用 (3)常用的git版本控制器管理代码的公共平台 github gitee (4)git:集群化、多分支
3. github,gitee,gitlab:区别
-github:一般开源的代码放再github,代码托管平台(公有仓库,私有仓库),公司代码不会放在这上面 -gitee(码云):中国的github,开源代码放在公有仓库,有一部分公司的公司代码托管到gitee的私有仓库(公司代码可放在码云上) -gitlab:公司自己的搭建github,公司内部自己访问(推荐公司用,可在docker上拉一个gitlab镜像,跑起来即可)
注意:gitlab是公司运维人员搭建的(开源的git远程仓库);使用起来跟gitee没有区别
4.git的下载安装
# 1.下载对应版本:https://git-scm.com/download # 2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
打开git官网,下载软件包,一路下一步安装好
5.整体流程
1.有红色信息(工作区有内容),就执行 add 2.全绿信息(内容全部在暂存区),才执行 commit 3.只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
二、核心操作
1.初始化仓库
#将已有的文件夹 - 初始化为git仓库 ''' >: cd 目标文件夹内部 >: git init ''' 注意:.git目录默认隐藏,可以通过命令ls -ah显示 #在指定目录下 - 初始化git仓库 """ >: cd 目标目录 >: git init 仓库名 """
右键---》点击git bash(相当于pycharm中的terminal窗口,支持linux命令)进入以下界面
或者用以下方式:
这里我新建了一个文件夹guogit(默认建在桌面上,不好)
一般都是隐藏的,可以显示隐藏文件,就会看到
2.
1 工作区:工作的目录,文件夹下,放一些文件,文件中写内容 2 暂存区:工作区的更改,提交到暂存区(在暂存区临时存储) 3 版本库:本地文件,内容变更记录 4 git相关操作(一堆命令) -git init # 初始化仓库,把当前路径,被git管理起来 -git init a # 创建出一个文件夹,改文件夹被git管理(.git隐藏文件) ''' #很多命令都同linux的命令 echo '222' > d.txt #工作区新增内容位222的文件 touch e.txt #工作区新增文件 vi e.txt #工作区编辑文件 rm e.txt #工作区删除文件 ''' -git status # 查看状态 -红色:更改没有被提交到暂存区 -绿色:更改被提交到暂存区,但是没有被提交到版本库 # 提交到暂存区 -git add a.txt # 把a.txt提交到暂存区 (git add .) -git add . # 当前路径下所有更改,提交到暂存区 -git reset . # 把提交到暂存区的,拉回到工作区(很少用) # 从暂存区提交到版本库(不能从工作区直接提交到版本库) -要往版本库提变更,需要先配置用户 # 全局配置(用户家路径记录:.gitconfig) git config --global user.email "lqz@qq.com" git config --global user.name "lqz" # 局部配置 (当前路径下配置文件中记录:.git-->config) git config user.email "egon@qq.com" git config user.name "egon" # 从暂存区提交到版本库(必须加注释,不加注释提交不上去) git commit -m '注释注释一定要加,并且有意义' # 查看log git log # 看到版本库中谁提交了什么,写了什么注释,在什么时间,每个版本都有一个id号 git reflog # 精简(详细)展示 #查看时间点之前|之后的日志: >: git log --after 2018-6-1 >: git log --before 2018-6-1 >: git reflog --after 2018-6-1 >: git reflog --before 2018-6-1 #查看指定开发者日志 >: git log --author author_name >: git reflog --author author_name # 回滚(回滚到版本管理的最新的位置) git checkout . #回滚(回滚到指定版本) git reset --hard 版本号(写一部分就能识别) 如下案例:git reset --hard 39e52
2.1命令演示
自己在guogit文件夹里手动创建出a.txt b.txt c.txt三个文件夹并写入内容
错了之后,自己手动把刚创建的删除。
也可以用命令新增文件
也可以用命令删除文件
此时已经把a b c三个文件都提交到暂存区了
更改c.txt内容,并提交版本库
把版本库回滚到c.txt没有更改前的状态
注意:
删除工作区的文件
3.
1 分支查看:git branch # 绿色表示当前所在分支 2 分支创建:git branch dev # 创建分支的代码,基于master创建出来的,代码现在跟master一样 -在那个分支上创建分支,目前新分支和所在分支代码一样 3 分支删除:git branch -d dev 4 切换分支 :git checkout dev 5 分支合并 git merge 分支名 现在在dev分支,要把dev分支合并到master分支:先切换到master分支,再执行合并dev分支的命令 6 创建并切换到某个分支(两部并作一步) git checkout -b 分支名
小案例:
在dev分支新增f.txt文件,提交到版本库后,把dev支合并到master分支
4.git提交代码
1 分支合并时,出现冲突
2 在同一条分支上,你和你的同事改了同一个文件的同一段代码,出现冲突