概念入门
概念: GIT是一个分布式的版本控制工具:
- 追踪变化:版本控制可以帮助我们在团队开发中记录何时,何地,何人对文件进行何种操作,且每次操作,版本号都会递增。
- 协同修改:多人并行地修改服务器端的同一个文件。
- 数据备份:记录当前和历史版本,方便版本回滚。
- 权限控制:对参与开发的人员进行权限控制。
下载与安装
概念: git属于傻瓜式安装,安装成功后使用cmd命令行键入 git --version 查看安装结果。
链接: 官网下载地址
链接: 淘宝镜像下载
Git结构
概念: Git管理的文件总共分为如下区域:
- 工作区(Working Directory): 你硬盘上的工作空间。
- 版本库(Repository): 又分为两个区域:
- 暂存区(stage): 该区中的文件都是待提交状态,这个区主要负责提供后悔的机会。
- 本地库分支(branch): 本地库分支默认使用master分支。
Git命令行首次提交文件流程
- 在工作区编写代码,如在D盘根目录下新建
hello.txt。 - 在工作区目录(D:\)下右键选择
Git Bash Here运行git命令行。- 这是一个git自带的命令行,支持linux命令。
ll:查看当前目录结构。cat hello.txt:查看文件内容vim hello.txt:编辑文件内容i:进入编辑模式。esc:退出编辑模式。:wq:保存并退出。
- 通过
git init初始化git仓库,此时目录中会生成一个.git文件夹。 - 设置开发人员标识:必须设置否则某些命令会失效。
- 局部设置:仅对当前本地库有效
- 姓名标识:
git config user.name joezhou - 邮箱标识:
git config user.email yy06200210@163.com - 更改后在
.git/config文件中查看。
- 姓名标识:
- 全局设置:对当前OS用户下的所有本地库有效(建议)
- 姓名标识:
git config --global user.name joezhou - 邮箱标识:
git config --global user.email yy06200210@163.com - 更改后在OS用户文件夹下的
.gitconfig文件中查看。
- 姓名标识:
- 局部设置:仅对当前本地库有效
- 通过
git status查看当前工作区和暂存区状态:- 文件为红色表示文件在工作区中。
- 文件为绿色表示文件在暂存区中。
- 通过
git add hello.txt命令将文件添加至暂存区:- linux相关警告可以忽略。
git rm --cached hello.txt把暂存区最新版本转移回工作区。
- 通过
git commit -m "首次提交" hello.txt命令将暂存区文件,用户,日志消息等提交到本地库默认分支master中。
回滚
概念:通过日志回滚:git只要在本地库发生操作,都会进行版本记录。
- git log 显示提交日志信息
- git log --pretty=oneline 更优雅查看
- git log --oneline 缩短了HASH字符串
- git reset --hard <HASH字符串> 将当前HEAD复位到指定的HASH字符串表示的状态
- --soft
- 仅仅在本地库移动HEAD指针
- --mixed
- 在本地库移动HEAD指针
- 重置暂存区
- --hard
- 在本地库移动HEAD指针
- 重置暂存区
- 重置工作区
- --soft
文件比较
- git diff 查看工作区和暂存区指定文件的内容差异。
- git diff --cached 查看暂存区和仓库指定文件的内容差异。
- git diff HEAD 查看工作区和仓库指定文件的内容差异。
++ 表示多出的内容 -- 表示减少的内容
如果一致就没什么提示了。
git diff 不指定文件时表示比较所有文件。
远程库(代码托管中心):
概念:
- 本地搭建局域网:
- GitLab服务器
- 互联网环境下:
- github:github.com
- 码云:gitee.com
流程:
- 项目经理
- 在工作区编写代码框架
- add到暂存区
- commit到本地库
- push到远程库
- 开发员A
- 从远程库clone到本地库
- 代码开发
- push到远程库(需要认证)
- 项目经理
- 从远程库pull到本地库
GitHub
概念:
- github是用于版本控制和协作的代码托管平台,是一个开源的分布式的版本控制系统,只支持git这一种唯一版本库。
- gitHub从08年4月上线,一直到18年6月被微软收购。
访问github更快
概念: github是国外网站,比较慢,建议在 DNS查询网中
- 查询
github.com复制TTL最快的 - 查询
github.global.ssl.fastly.net复制TTL最快的 - 添加在
C:\Windows\System32\drivers\etc\中的hosts文件末尾:
140.82.112.3 github.com git
67.228.126.62 github.global.ssl.fastly.net
如果权限不够,点击host文件,右键属性 - 安全 - 编辑 - 选中当前登录的账号,对其勾选完全控制
创建github仓库
概念: 一个库对应一个项目,可以包含文件夹和文件,图像,视频,电子表格等内容。
- 在github上创建一个仓库 start,
- 在代码区编写文件start.txt
- git add start.txt
- git commit -m "first" start.txt
- 绑定远程仓库
git remote add origin 远程路径- origin是远程仓库别名,随便起,建议默认。
- 查看远程的仓库绑定信息
git remote -v
- 将文件推动到远程某个仓库的某个分支
git push -u origin master
- 填入用户名和密码
从别人的github上拉项目到本地
你可以直接下载,但是建议使用clone复制远程地址。
- 找一个文件夹
- 右键开启git命令行
git clone 远程地址将完整的把远程项目下载到本地,且同时自动完成了初始化本地库的工作。
将修改后的代码重新推回别人的github
概念:项目经理需要对某个用户开放权限,否则别人无法push
- 项目经理在github上选择settings,
Access,添加用户名,copy invite link复制邀请码。- 开发人员访问邀请码连接,接受邀请accept invitation
- 重新push即可。
项目经理拉从gitHub上拉取最新代码
- git pull 从远程获取最新版本并merge到本地
- 相当于 git fetch 取回更新 和 git merge 两个命令合区
git pull origin master
使用Idea支持git
- File-settings-GIT-填入git.ext地址
- File-settings-github-填入你的用户名密码
将自己的项目发布到github
- VCS-Import Into Version Control-Create Git Responsirty
- 选择当前项目 文件变红,处于工作区
- 右键项目 git -> add,文件变绿,处于暂存区
- 右键项目 git -> commit 文件无色,处于本地仓库分支
- 如果需要更换分支,右键git-Responstriy-branches
- ctrl+t 快速更新项目
- ctrl+k 快速提交项目
- ctrl+shift + t 快速push项目
- 添加远程仓库地址
- 刷新github,可以看到publish成功
将别人的项目clone到自己的idea中
- VCS -> Checkout from Version Control -> Git
- 填入地址
- Test测试
Clone 不需要登陆账号和密码
解决代码冲突
编辑文件删除冲突代码 git add 文件名 git commit -m 日志 (这里不要添加文件名)
避免代码冲突
- 多人修改统一文件,导致冲突。
- 分工明确 少操作相同文件
- 使用IDEA可以自动检测更新
- 提交前 更新(push钱pull)
分支
分支就是主干的一个克隆
- 保证安全,如果分支开发失败,删除不影响主干
- 保证效率,多个分支一起并行工作,完成即可合并到主干
- git branch -v 查看当前分支情况
- git branch hot_fix 创建一个hot_fix分支
- git checkout hot_fix 切换到hot_fix分支
- 建议不要在主干master上直接操作。
- 合并分支,需要先切换到主干master上 git checkout master 然后执行命令 git merge hot_fix