简介
- Git 是目前世界上最先进的分布式版本控制系统(没有之一)
- 作用:源代码管理 — 方便多人协同开发和版本控制
- 简化工作图
工作区暂存区和仓库区
工作区
- 对于添加、修改、删除文件的操作,都发生在工作区中
暂存区
- 暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分
仓库区
- 仓库区表示个人开发的一个小阶段的完成
- 仓库区中记录的各版本是可以查看并回退的
- 但是在暂存区的版本一旦提交就再也没有了
Git单人本地仓库操作
以Ubuntu为例
- 安装git
sudo apt-get install git
- 查看git安装结果
git
- 创建项目
mkdir Desktop/test/
- 创建本地仓库
cd Desktop/test/
git init
- 配置个人信息
# 配置个人信息后可以在 .git目录中config可以看到
# 默认不配置的话,会使用全局配置里面的账户信息,全局git配置文件路径:~/gitconfig
git config user.name 'xxx'
git config user.email 'xxxx@xxx'
- 新建文件
touch demo.py
- 查看文件状态
git status
- 将工作区文件添加到暂存区
git add . # 添加所有文件
git add filename # 添加指定文件
- 将暂存区提交到仓库区
git commit -m "msg" # msg为版本内容描述
- 在文件中编辑代码
# 在demo.py 中添加 print(hello git)
git commit -am "msg"
- 查看历史版本
git log
# 或者
git relog
"""
git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录
git log 则不能察看已经删除了的commit记录
"""
- 回退版本
"""
方案一:
HEAD表示当前最新版本
HEAD^表示当前最新版本的前一个版本
HEAD^^表示当前最新版本的前两个版本,以此类推...
HEAD~1表示当前最新版本的前一个版本
HEAD~10表示当前最新版本的前10个版本,以此类推...
"""
git reset --hard HEAD^
"""
方案二:
"""
git reset --hard 版本号
- 撤销修改
- 只能撤销工作区、暂存区的代码,不能撤销仓库区的代码
- 撤销仓库区的代码就相当于回退版本操作
"""
撤销工作区代码
"""
git checkout 文件名
"""
撤销暂存区代码
"""
# 1.将暂存区代码撤销到工作区
git reset HEAD 文件名
# 2.撤销工作区代码
git checkout 文件名
Git远程仓库Github
- 创建远程仓库
以下操作演示在Github网站上创建远程仓库,其他类似的git代码管理工具操作都是一样的
- 编辑仓库信息
- 查看仓库远程地址
- 配置SSH
- 配置SSH公钥
Settings —> SSH and GPG keys —> New SSH key
# 配置全局github注册邮箱和用户名
vi .gitconfig
"""
[user]
email = xxxx@xxx
name = xxxx
"""
# 生成SSH公钥
ssh-keygen -t rsa -C "xxxx@xxx"
- 配置SSH公钥
- 补充:删除旧的密钥
- 删除 ~/.ssh 目录,这里存储了旧的密钥
rm -r .ssh
- 克隆项目
cd Desktop/manager/
git clone https://github.com/zhangxiaochuZXC/test007.git
# 配置身份信息 -- 可略此步,用全局身份信息
cd Desktop/manager/test007/
git config user.name '经理'
git config user.email 'manager@163.com'
- 多人协同开发
# 修改代码之后
git commit -am '第一个变量'
git push
# 工作之前
git pull
git commit -am "msg"
git push
- 代码冲突
- 容易冲突的操作方式
- 多个人同时操作了同一个文件
- 一个人一直写不提交
- 修改之前不更新最新代码
- 提交之前不更新最新代码
- 擅自修改同事代码
- 减少冲突的操作方式
- 养成良好的操作习惯,先pull在修改,修改完立即commit和pus
- 一定要确保自己正在修改的文件是最新版本的
- 各自开发各自的模块
- 如果要修改公共文件,一定要先确认有没有人正在修改
- 下班前一定要提交代码,上班第一件事拉取最新代码
- 一定不要擅自修改同事的代码
- 标签
# 本地打标签
git tag -a v1.0 -m 'version 1.0'
# 推送标签到远程仓库
git push origin 标签名
例:
git push origin v1.0
# 删除本地标签
git tag -d 标签名
# 删除远程仓库标签
git push origin --delete tag 标签名
- 分支
# 查看当前分支
git branch
# 切换分支
git checkout -b dev
# 设置本地分支跟踪远程指定分支(将分支推送到远程)
git push -u origin dev
"""
将代码合并到master分支
"""
# 切换到master分支
git checkout master
# dev分支合并到master分支
git merge dev
# 合并分支默认在本地完成,合并后直接推送即可
git push