一、 Git概念
Git 是目前世界上最先进的分布式版本控制系统(没有之一)
优点:1)方便多人协同开发 2)方便版本控制
二、 Git操作流程
Git服务器 --> 本地仓库 --> 客户端 --> 本地仓库 --> Git服务器

三、 工作区、暂存区、仓库区
1. 工作区: 对于添加、修改、删除文件的操作,都发生在‘工作区’中 (红色文件)
2. 暂存区: 指将工作区中的操作完成小阶段的暂时存储。(绿色文件)
3. 仓库区: 1)仓库区表示个人开发的一个小阶段的完成
2)仓库区中记录的各版本是可以查看并回退的
3)但是在暂存区的版本一旦提交就再也没有了
# 可以使用git status查看当前代码的状态,处于哪个区


四、 Git 单人本地仓库操作
1. 概念: 本地仓库是个.git 隐藏文件;
2. 安装与查看
安装:sudo apt-get install git 或者 yum install git 查看: git
# 腾讯云服务器自带git
3. 创建项目,并在里面创建本地仓库
进入到test ,并创建本地仓库.git; 新创建的本地仓库.git 是个空仓库
cd Desktop/test/
git init # 创建本地仓库
git init 后,会创建一个 .git 的本地仓库,一般项目都和它同级放置
4. 配置个人信息 (用户名 +邮箱)
git config user.name '张三'
git config user.email 'zhangsan@163.com'
#查看配置是否生效
git config --list
#默认不配置的话,会使用全局配置里面的用户名和邮箱 全局git配置文件路径: ~/.gitconfig
5. 本地仓库搭建好了,可以测试了
在项目文件夹下,创建demo.py文件,用于版本控制演示
查看文件状态: git status
- 红色表示新建文件或者新修改的文件,都在工作区.
- 绿色表示文件在暂存区
- 新建的demo
.py 文件在工作区,需要添加到暂存区并提交到仓库区
将工作区文件添加到暂存区
# 添加项目中所有文件 git add .
# 添加指定文件 git add demo.py
将暂存区文件提交到仓库区(本地仓库)
git commit -m '版本描述'
# commit 会生成一条版本记录
# -m 后面是版本描述信息
添加和提交的合并命令: git commit -am "版本描述"
查看历史版本
git log 或 git reflog
# git reflog 可以查看所有分支的所有操作记录(包括commit 和 reset 的操作),包括已经被删除的commit记录;
# git log 不能查看已经删除的 commit 记录

6. 版本的撤销与代码回退

说明: HEAD 表示当前最新版本
HEAD^ 表示当前最新版本的前一个版本
HEAD^^ 表示当前最新版本的前两个版本,以此类推...
HEAD~1 表示当前最新版本的前一个版本
HEAD~10 表示当前最新版本的前10个版本,以此类推...
总结: (三个区域的操作,相当于把代码清除掉) #仓库区的代码,版本回退: git reset --hard HEAD^ 或者 git reset --hard 版本号
(版本回退上一个版本后,代码直接恢复到上一个版本,不会用add 或者commit后续操作 :nothing to commit, working directory clean 。 如果有回退之前的版本号,也可以复原代码,使用: git reset --hard 版本号) #暂存区代码,撤销修改: 1.git reset HEAD 文件名 2.git checkout 文件名 #工作区代码,撤销修改: git checkout 文件名称
五、 Git 远程仓库--多人开发
1. 创建远程仓库
Git源代码仓库 https://github.com/
2. 克隆项目和多人协同开发
总结: (配置和各种提交,拉取 均因在 Desktop/manager/test007/ 的文件 test007的项目文件夹下 ) 经理工作: 0. 准备经理的文件 Desktop/manager/ 1.git clone https地址或者ssh地址 cd Desktop/manager/ git clone https://github.com/***/test007.git 2.配置身份信息 () cd Desktop/manager/test007/ git config user.name '经理' git config user.email 'manager@163.com' 3.创建项目 4.推送项目到远程仓库 # 工作区添加到暂存区 git add . # 暂存区提交到仓库区 git commit -m '立项' # 推送到远程仓库 git push
# 拉取更新 git pull
张三工作: 0.准备张三的文件 Desktop/zhangsan/ 1.克隆项目到本地 2.配置张三身份信息 3.模拟张三同步服务器代码 一般需要先 git pull 再进行开发;步骤和 manager一致 建议:长期存储密码: git config --global credential.helper store
3. 代码冲突
总结: 提示:多人协同开发时,避免不了会出现代码冲突的情况 原因:多人同时修改了同一个文件 危害:会影响正常的开发进度 注意:一旦出现代码冲突,必须先解决再做后续开发 减少冲突的操作方式
1.养成良好的操作习惯,先pull在修改,修改完立即commit和push 2.一定要确保自己正在修改的文件是最新版本的 3.各自开发各自的模块 4.如果要修改公共文件,一定要先确认有没有人正在修改 5.下班前一定要提交代码,上班第一件事拉取最新代码 6.一定不要擅自修改同事的代码
冲突案例 比如: zhangsan增加了代码,然后push 到了 git 上; manager 没有先 pull , 直接在相同文件下开发,manager add , commit 都会正常,但当 push 到 git 时,会有冲突导致报错;
解决: 1. 先 git pull 拉取代码
2. 提示冲突文件,打开文件解决冲突,删掉冲突代码 和提示标识 "<<<<<" 与"========="
3. 解决完冲突代码后,依然需要 add 、commit 、 push
4. 标签
当某一个大版本完成之后,需要打一个标签用于 记录大版本 或者 备份大版本代码
1. 进入本地仓库 (与 .git 同级的文件夹下)
2. 本地打标签 git tag -a 标签名 -m '标签描述' 例: git tag -a v1.0 -m 'version 1.0'
3. 推送标签到远程仓库 git push origin 标签名
git push origin v1.0
4. 删除本地和远程标签
# 删除本地标签 : git tag -d 标签名
# 删除远程仓库标签: git push origin --delete tag 标签名
5. 分支
1. 分支的作用
1) 区分生产环境[master主分支]代码以及开发环境代码[dev分支]
2) 研究新的功能或者攻关难题
3) 解决线上bug
2. 查看当前分支 git branch
3. 创建分支步骤
1)创建并切换到 dev 分支
git checkout -b dev
2)设置本地分支跟踪远程指定分支(将分支推送到远程)
git push -u origin dev
3) 修改 dev 分支源代码: add 、commit 、 push
4) dev 分支合并到 master 分支
(1) 先切换到主分支: git checkout master
(2) dev 分支合并到 master 分支: git merge dev
5) 合并分支默认在本地完成,合并后直接推送即可
git push
#案例: 如果在zhangsan 创建了分支 test 01 , 然后在里面修改了代码; 正好在这个期间,其他人也修改了相同文件夹,并push 到了master分支上。 zhangsan 在 test01 分支上 git push 会报错。
# 解决: 两种方式:
1) 指定分支push -- git push origin branchName , 合并主分支,在主分支提交时,处理冲突
2)可以切换到master主分支,先 git pull 更新最新的mastet 分支代码;再切换到 test01 进行 push 与 合并
# 有些冲突的解决,需要你指定分支操作
# 推送到指定分支: git push origin branchName
# 拉取指定分支: git pull origin master
--------------------------------常用 必须掌握-------------------------------------
# 初始化一个git仓库 让项目文件夹使用git管理起来 产生一个.git隐藏文件夹(本地仓库) git init
# 查看当前处于状态 git status
# 将工作区代码提交到暂存区 git add .
# 将暂存区代码提交到本地仓库 git commit -m "提交的备注"
# 将本地仓库代码-->推送到远程仓库 git push
# 拉取远程仓库最新代码 git pull
# 查看日志/详细日志 git log/reflog
# 第一次克隆项目到本地 git clone 远程仓库地址(https)
# 创建分支并切换分支 git checkout -b 分支名称
# 切换分支 git checkout 分支名称
#合并分支 git checkout master git merge dev
--------------------------------不太常用会copy------------------------------------- # 版本回退(本地仓库) git reset --hard HEAD^ git reset --hard 版本号
#从暂存区撤销 git reset HEAD -- 文件名 git checkout 文件名
# 检出 (工作区撤销) git checkout 文件名
# 切换分支 git checkout master
# 查看当前分支 git branch
# 删除 git rm
# 创建标签 git tag -a 标签名 -m '标签描述' # 推送标签到远程仓库
1. 工作区 add commit push pull (pycharm实际操作中)
一般新建文件后,需要使用 add
如果在已提交的代码上修改, 一般是 commit , 然后直接 push
拉取到本地,可以先使用 pull ; 如果有冲突,可以先commit ,然后再pull
|