P2M6Live:Git
Git 是指分布式版本控制系统,常用的有 Github、gitee、gitlab。
每一个单位都需要从服务器下载完整备份,包括历史修改信息。 多人同时上传修改时,新文件会被接受,而同名文件的不同上传需要手动处理冲突。
配置用户
安装 Git 完成后:
- 全局用户名:
git config --global user.name "myName" - 全局邮箱:
git config --global user.name "myName"
全局的配置文件是用户文件夹下的 .gitconfig 文件
提交与重置
相关概念
- 工作区
- 暂存区
- 版本库
提交修改的主要操作
-
托管文件夹
文件夹下,git bash here 进入命令行 -
创建本地仓库
命令:git init初始化
出现了.git文件夹 -
提交到本地仓库
- 添加到暂存区
git add ./添加文件夹下所有文件 - 把暂存区的文件提交到本地仓库
git commit -m 'note'note 为提交说明
两步并作一步:
git commit -am 'note' - 添加到暂存区
状态查看
git status 显示当前文件状态,加 -s 只显示简略信息
未添加未提交:红色
已添加未提交:绿色
版本控制
查看提交日志
-
git log详细版本日志,提交人和时间
加--oneline一行日志,只有版本号和提交说明命令行参数:
-p/--patch:显示版本修改,补丁形式
-n:显示最近的 n 次提交版本 -
git reflog全部操作日志,包括提交和回退
版本回退
-
暂存区回退
git reset Head~N回退到之前的版本
从当前版本向旧版本从 0 开始依次排列。
e.g.git reset Head~1/git reset Head^到上一个版本。git reset VersionID回退到具体版本号的版本
e.g.git reset 645e5c6
⚠以上是默认
--mixed的缺省形式。会保留历史记录,回退后日志仍可找到回退前的版本。 -
git checkout URL将暂存区同步到工作区
同步后,文件才发生变化
e.g.git checkout ./检查同步整个托管文件夹
硬回退模式 / 强制回退 --hard
加 --hard,该版本以后的版本日志会被删除,工作区也会直接同步,不需再 checkout。
谨慎使用。不过强制回退后,查看操作日志里还有记录。
软回退模式 --soft
分支
master 分支为主分支,也是默认分支。实际工作中,不允许在 master 中直接操作,修改通常进行在临时的分支,测试完成后再融合进 master。
创建分支
git branch BranchName 创建新分支
git checkout BranchName 转至某分支
git branch 查看所有分支
合并分支
git merge BranchName 当前分支合并某分支
通常是主分支合并其他测试分支,或者说其他测试分支并入主分支,那么这时需要先切换到主分支再合并。
加 -d,会在合并完成后删除被合并分支。
合并冲突
不同分支的同一位置都有修改,这时需要手动选择处理。
冲突处理完成后,文件已与合并前不同,需要重新 add、commit。
Github 在线托管平台
Git 远端操作:发生在版本库和平台之间
- Github 上创建一个 repository
- 连接远端仓库
git remote add SourceName URL
连接后,便能以 SourceName 指代仓库地址- HTTPS:
- SSH:
- 克隆项目到本地
git clone URL - 下拉到本地
git pull Source Master将远端的合并进本地 - 本地仓库(分支)推送到远端仓库
git push SourceName BranchName
push 前务必再次 pull,保证使用的是最新版本