写在前面:
团队开发中版本管理是必不可少的,版本控制工具也有很多,像我用过的有Git、Sourcetree、TortoiseGit(小乌龟)等等,最顺手的当然还是Git了,在此总结一下Git的使用。
tip: 工作中的即时沉淀真的很重要,其他两个其实也很想总结一下,但是苦于当时没有记录(只记得那个时候配置花了两天时间,虽然那个时候我还是个菜鸟),最近工作又很忙,总结的事暂时就先搁置一下。
下面开始上干货:
一、什么是Git
Git官方名称为分布式版本管理器。
通俗点讲就是一个可以管理我们的项目文件夹的软件,这个文件夹被管理后可以对他进行各种操作,并且保证我们写过的内容不会丢失。(除了分布式版本控制工具,还有集中式版本控制工具,如:CVS、SVN、VSS...这里不做赘述)
二、Git安装
官网地址:git-scm.com/
打开官网,直接点击下载安装即可
测试是否安装成功:打开cmd,输入git --version,出现了你安装的git版本,就算是成功安装好了!
三、Git工作原理
工作区:即在电脑里能看到的目录。
暂存区(缓冲区/index):此时还没有生成版本号。
历史区(本地版本库):工作区有一个隐藏目录“.git”,是Git的版本库。要先放到暂存区,然后在暂存区放到历史区,才可以生成一个版本保存下来
远程库:即远程仓库(Gitee国内、GitHub国外、GitLab企业 等)
HEAD指针指向当前分支(只有一个分支时会指向master,而master是指向最新提交)
四、Git常用命令
Git安装好后,打开项目文件夹,单击鼠标右键,点击Git Bash Here进行命令操作
1. 初始化用户名和邮箱,告诉git是谁提交的版本,第一次时需要
- git commit --global user.name "name"
- git commit --global user.email "email"
1.1 查看用户名和邮箱
- git config user.name
- git config user.email
1.2 修改用户名和邮箱
- git config --global user.name "name"
- git config --global user.email "email"
2. 初始化本地仓库(无需重复初始化)
- git init
3. 提交代码到暂存区
- git add .(提交所有文件)
- git add index.txt(提交某一文件)
- git add test(提交某文件夹)
3.1 删除暂存区与本地(工作区)的文件
- git rm
3.2 删除暂存区文件,但本地文件还存在,只是不希望这个文件被版本控制
- git rm --cached 文件名
4. 提交代码到本地版本库(历史区)
- git commit -m "message"
4.1 查看本地版本库提交历史
- git log
4.2 如果有时代码提交错误,或者想回到之前的某个版本,且那个版本之后提交的版本不需要了,此时就需要 版本回退 了
可以先执行 git log 查看版本库历史
- git reset --hard 目标版本号(几位即可)
- git reset --hard HEAD ^ ( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD^改成HEAD^^, 以此类推)
git reset的作用即修改HEAD的位置,将HEAD指向的位置改变为之前存在的某个版本
5. 查看当前git的所有配置信息
- git config --list(包括仓库级别 local、用户级别global、系统级别system的信息)
五、Git远程库(以gitee为例)
首先要登录gitee,新建一个仓库(一个项目一个仓库)
1. 添加远程库
- git remote add origin 远程库地址链接
1.1 删除远程库
- git remote rm origin
2. 将历史区内容推送到远程库
- git push -u origin 分支名(第一次推送,要在远程仓库创建远程分支)
- git push(第二次及以后直接git push即可)
- git push --set-upstream origin [当前分支名](切换新分支后,需要使用--set-upstream将本地分支与远程分支关联,否则git不知道我们想推送到哪个分支)
3. 拉取远程库代码(第一次拉分支最好不要用origin , 而是直接用仓库地址)
- git pull(直接拉取时可能不知道要拉远端的哪个分支,根据提示设置分支即可)
- git pull origin 远程分支名(拉取远程某分支代码)
- git fetch(直接拉取)
- git fetch origin 远程分支名:临时分支名(拉取远程某分支代码)
git pull 会自动和本地内容合并;且要在本地先创建相应的分支,并切换到该分支,然后再拉取
git fetch 会获取远程最新信息并开辟一个临时分支,需要再执行git merge 临时分支名 进行合并分支内容 ;不用在本地先创建分支
4. 克隆远程库代码
- git clone 远程库地址链接
- git clone -b 分支名 远程库地址链接 (拉取远程某分支代码)
5.更改远程仓库
(如果公司leader电脑突然罢工,而且是修不好那种,那就需要用到了,虽然这种几率很小很小,但是已经被我遇到两次了)
- git remote -v(查看远程仓库地址)
- git remote rm origin(移除当前仓库地址)
- git remote add origin 远程库地址链接(移除后添加目标仓库地址)
- git remote -v(查看是否更改成功)
由于是两个不同的仓库,拉取、推送代码时可能会遇见分支相关问题,根据提示使用相关指令即可(git branch --set-upstream-to=origin/dev dev)
六、Git分支操作
Git分支一般包括开发分支develop,测试分支test,主分支master。 团队开发中可以把自己的工作从主线上分离出来,这样开发自己分支的时候不会影响主分支的运行。
1. 创建及切换本地分支
- git branch [branch name](创建本地分支)
- git checkout [branch name](切换本地分支)
- git checkout -b [branch name](创建+切换本地分支)
2. 删除分支
- git branch -d [branch name](要先切换到别的分支)
3. 重命名分支
- git branch -m 原分支名 新分支名
4. 查看分支
- git branch(查看本地分支)
- git branch -r(查看远程分支)
- git branch -a(查看所有分支<本地+远程>)
5. 合并分支
- git merge 分支名(把指定分支合并到当前分支上)
6.强制更新远程分支
- git push -f origin 分支名(强制更新远程某分支)
- git push --force(强制更新所有分支)
平时最常用的无非就是拉取代码,合并冲突,提交代码:
git add .
git commit -m ""
git pull
git push
最后附带一下.gitignore文件,如果提交时不希望提交某个文件,可以将不需要提交的文件目录写进去