GIt
概念
- git是一个专门用于进行团队代码管理的工具。主要包括代码管理、版本回退、代码合并、代码分支等功能
- 目前比较流行的代码管理工具有
git
和svn
- git:支持离线使用,同时代码管理方式为分布式管理,即每个团队成员都有属于自己的 本地代码仓库
- svn:必须在线使用,同时集中式代码管理,团队成员必须要先下载最新的代码才能继续操作。
安装
- git是跨平台的桌面应用程序,去官网下载安装包,一路next即可,建议安装到c盘
- 测试
- 桌面右击查看是否有
git bash here
和git gui here
两个选项
- 桌面右击查看是否有
远程仓库
概念:是指基于git实现的在线代码托管平台,即可以在线管理代码。可以实现代码保存和读取到远程。目前来说比较流行的是GitHub。因为其用的是国际服务器,国内访问比较慢,所以国内一般也同时使用码云(Gitee)来进行代码托管(国内GitHub)
工作流程:可以在本地通过git以及命令来提交代码到Gitee或拉取代码到本地仓库。
git 个人信息设置
- git在团队代码管理中,需要设置个人的邮箱以及名称,主要是为了区分团队协作时是谁提交了代码。
- 运行命令:右击,点击
git bash here
打开git终端,输入命令
git config --global user.name 名称
git config --global user.email 邮箱地址
- 名称用英语和数字的组合,可以纯英文。
- 电子邮箱就是你注册码云所使用的邮箱地址。
git 工作流程
创建远程仓库
- 个人中心右上角点击菜单-新建菜单
- 输入仓库的名字(项目名字),勾选初始化仓库,中间
.gitgnore
随意选择一个选项,点击创建仓库即可
- 默认情况下,应该只有一个
.gitgnore
文件
将远程仓库的代码克隆到本地
-
在需要拷贝项目文件夹的目录下右击->打开
git bash here
输入以下命令并执行 -
git clone 远程仓库的地址
-
初始的文件夹目录
.git/
:隐藏文件夹,保存了所有的版本代码说明,方便后面进行撤回,即本地代码仓库.gitgnore
:这是用于配置可忽略的文件,可以指定项目中那些文件夹可以不用提交,即忽略提交。
-
注意点
- 可选:如果不小心用户名或密码输入错误,那么输入以下命令清除错误的用户名和密码,再重新输入
git clone
命令进行下载
git config --system --unset credential.helper
- 第二套解决方案:取消window对git的安全认证
git credential-manager uninstall
- 保存用户名和密码. 避免多次重复输入
git config --global credential.helper store
测试是否配置成功:push时再输入一次用户名和密码,后面就不需要再输入
将本地仓库的最新提交的版本代码上传到远程仓库(码云)
git push
将远程仓库的最新代码拷贝到本地:针对版本不一致的情况
git pull
- 一般是项目代码版本不是最新的团队成员才会用pull来更新代码,如果是本身电脑没有该项目那么就用
git clone
来处理
git 分支
概念
- git为了方便团队中不同开发人员管理代码,设置了代码分支机制。通过分支机制,每个团队成员都可以在远程仓库都可以有自己的”私人小仓库”,主要目的是为了个人代码和团队代码更好的管理和区分。
主要内容
- 在团队中,组长会给每个成员创建一个个人分支,用于保存团队成员代码的提交。而新建仓库默认生成的
master
分支则用于保存项目最终可运行的成品代码 - 个人分支仍然可以实现代码的
push
和pull
等功能。一般是团队成员更改代码之后先提交到个人分支,然后和当前master分支代码进行测试没有问题后才会将个人分支的最新代码提交到master分支。确保master
分支始终是可以运行的最新代码
分支的一般使用流程
-
图解
-
个人开发流程:将个人开发的新代码提交到master
- 团队成员开发代码
- 代码开发完毕后,将master分支的最新代码(先pull)进行合并,合并到个人分支
- 测试个人分支上的代码是否可以正常运行。如果为否:则继续修改个人分支的代码,修改后回退到第二步
- 测试成功后将代码推送到个人分支
- 切换到master分支,将个人分支的代码合并到master分支的最新代码(测试一下是否可运行,避免个人分支测试成功的同时其他团队成员提交了代码)
- 测试ok后push到master分支(将个人分支的最新代码汇入到远程的master分支上)
分支的基本操作
-
新建分支并切换到个人分支(管理员)
git checkout -b 分支名称
- 分支名称建议直接以团队成员名字命名,方便区分。只能是管理员才能新建分支
- 新建分支时git会默认将master分支上最新的代码拷贝到新建的分支上。后续提交到个人分支的代码跟master分支没有关系了。
-b
:若没有该分支,则新增
-
切换到某个分支
git checkout 分支名称
- 若分支不存在,则报错。
-
将指定分支的代码合并到当前操作的分支
语法: git merge 分支名称 例子:比如当前是在dengiswen 分支上:将master分支的代码合并到该分支上 git merge master
注意点
-
如果是本地新增分支,不会立即同步到远程仓库,需要提交一次代码到远程分支,才可以在程仓库中看到个人分支的代码
- 推送某个分支的代码到远程仓库
git push origin 分支名称
团队开发中的冲突
-
什么是冲突
- 多个团队成员先后提交了同一个文件同一行代码的更新时,那么会因为队员在进行代码合并时因为代码修改位置一样起冲突
-
如何触发冲突
-
同事更新了某个文件的代码并推送到了master分支,而你个人也更改了
同一个文件的同一行代码
,当你编写好代码准备合并master分支时,那么个人分支合并master分支时会因为代码而起冲突问题。 -
冲突示例图
-
-
如何解决
- 和写对应代码的同事协商决定最终留下哪些代码
- 再切换到master分支,进行pull,确保master分支时最新代码
- 合并个人分支代码,之后push到远程master分支
- 切回至个人分支,和master分支进行合并,并推送到个人分支,保证个人分支代码和master代码是同步的
忽略 无需提交的文件夹
-
概念:可以通过设置
.gitignore
文件确定无需提交的文件夹 -
使用:将
node_modules
追加到该文件中,即可实现提交代码时忽略node_modeles
文件夹以及.gitignore
里其他声明的文件夹.gitignore: # Build and Release Folders bin-debug/ bin-release/ [Oo]bj/ [Bb]in/ # Other files and folders .settings/ node_modules/ # Executables *.swf *.air *.ipa *.apk # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` # should NOT be excluded as they contain compiler settings and other important # information for Eclipse / Flash Builder.
- 可选:如果不小心用户名或密码输入错误,那么输入以下命令清除错误的用户名和密码,再重新输入
《git 分支使用》
一、新建子分支
git checkout -b 子分支名称
说明:
- 该命令执行完成后,会创建并自动切换到子分支;
- 子分支新建成功后,会将目前主分支的所有内容全部克隆到子分支;
二、切换分支
注意:切换分支之前,需要先执行 add
和 commit
将当前分支的代码进行保存。
git checkout 分支名称
三、推送子分支
将本地子分支推送到远程子分支:
git push origin 子分支名
说明:Git 中要求我们在推送之前,必须保证本地有远程的最新代码,所以建议每次 push
之前都先 pull
拉取远程最新代码。
四、拉取远程子分支
git pull origin 子分支名
五、分支代码合并
要将子分支和主分支的代码进行合并,顺序没有要求,可以先将子分支的合并到主分支,然后再将主分支合并到子分支。
例如,我们先将子分支合并到主分支。
1、切换到主分支
2、合并子分支的内容
将子分支中所有的内容合并到主分支:
git merge 子分支名
这一步完成后,可以保证本地的主分支和子分支代码一致。但是,远程的主分支中可有有新的代码。
说明:建议合并完分支后,在当前分支再执行一次 add 和 commit。
3、拉取远程主分支的内容
将远程主分支上组员的代码,拉取到本地主分支。
git pull
这一步完成后,在本地主分支中就已经有所有最新的代码了。
4、推送到远程主分支
将本地主分支的内容推送到远程主分支:
git push
这一步完成后,我们已经将自己最新的代码共享到远程主分支上了,组员都可以从远程仓库拉取我的最新代码。
六、继续开发
1、切换到子分支
2、合并主分支的内容
将主分支中最新的代码,合并到子分支:
git merge master
这一步完成后,本地所有分支的代码就都合并完成了,所有分支的代码都是一样的了。
然后才可以继续下一个功能的开发。
其他操作
:wq
退出
《冲突处理》
一、拉取代码出现冲突
当我们执行完 git pull
命令后,分支名称变成了如下形式,就有可能是拉取的代码和本地的代码出现冲突:
解决完冲突后,需要重新保存一次:
git add .git commit -m 'xxxx'
本地的冲突解决完成并保存后,建议运行项目查看效果:
git push
就可以重新推送代码到远程。
二、代码重置
代码重置,指的是我们可以在本地仓库中查询存储记录,然后通过命令将项目代码回退到指定版本。
1、查看存储记录
git log
找到需要回退的版本的 commit id:
2、版本回退
git reset --hard 111bbb88bc90a7aeaaacc8fd13c3d9424ebdca3d
dd .git commit -m 'xxxx'
本地的冲突解决完成并保存后,建议运行项目查看效果:
git push
就可以重新推送代码到远程。
二、代码重置
代码重置,指的是我们可以在本地仓库中查询存储记录,然后通过命令将项目代码回退到指定版本。
1、查看存储记录
git log
找到需要回退的版本的 commit id:
[外链图片转存中…(img-oq9vzhZm-1667142729089)]
2、版本回退
git reset --hard 111bbb88bc90a7aeaaacc8fd13c3d9424ebdca3d