Git
Git 是分布式版本控制系统,源代码管理工具。
作用:
方便协同开发、方便版本控制
- 分布式管理:服务器和客户端都有版本控制能力,都能进行代码的提交、合并、…
- Git会在根目录下创建一个.git隐藏文件夹,作为本地代码仓库
Git服务器 --> 本地仓库 --> 客户端 --> 本地仓库 --> Git服务器
结构划分为:工作区、版本库(暂存区、仓库区)、服务器云端;
-
工作区:
在IDE中进行文件的添加、修改、删除操作;
文件添加、修改;
文件删除;
文件恢复; -
暂存区:
存储每天中一小阶段的工作,是版本库的一部分;
存储更改记录;
查看记录git status; -
仓库区:
在用户分支上存储每天的工作;- 仓库区表示个人开发的一个小阶段的完成
- 仓库区中记录的各版本是可以查看并回退的
- 但是在暂存区的版本一旦提交就再也没有了
存储更改记录;
查看历史记录 git reflog;
-
服务器:
存储每个成员的编码记录,每个成员
Git本地仓库操作:
本地仓库是一个.git隐藏文件
-
1.安装Git
sudo apt-get install git
git
查看安装结果 -
2.创建项目
mkdir demo
创建文件夹 demo,作为工作项目; -
3.初始化本地仓库 .git
git init
-
4.配置个人信息
默认信息:全局配置里面的用户名和邮箱 全局git配置文件路径:~/.gitconfig
git config user.name 'mophite'
(可以试试zhangsan -->zhangsangfeng1)
git config user.email '[email protected]'
-
5.新建.py文件体验一下
在项目文件内新建 test.py文件,git status
查看文件状态(红色表示在工作区,绿色表示在暂存区)。 -
6.跟踪文件(工作区文件添加到暂存区)
# 添加项目中所有文件 git add . # 添加指定文件 git add login.py
-
7.提交到仓库区
commit会生成一条版本记录
-m后面是版本描述信息
git commit -m '版本说明'
提交后,暂存区不再有文件,查看状态:干净的工作区。 -
8.编辑代码,再次提交到仓库区,查看历史版本
代码编辑完成后:
git commit -am "更新说明"
查看历史版本:git log # 不能查看已经删除的文件 commit记录 git reflog # 查看所有分支的所有操作记录
-
9.版本回滚
– 方法1
git reset --hard HEAD^
hard
HEAD^(前一个版本) HEAD^^(前两个版本) 类推
HEAD~N (前N个版本)
– 方法2
git reset --hard 版本号
版本号: -
10.撤销修改
只能撤销工作区、暂存区的代码,不能撤销仓库区的代码
撤销仓库区的代码就相当于回退版本操作- 撤销工作区代码
新加代码,没有add到暂存区,保留在工作区:
git checkout 文件名
- 撤销暂存区代码
新加代码,并add到暂存区:# 第一步:将暂存区代码撤销到工作区 git reset HEAD 文件名 # 第二步:撤销工作区代码 git checkout 文件名
- 撤销工作区代码
-
11.对比版本
- 对比版本库与工作区
git diff HEAD -- test.py
test.py是工作区的代码文件 - 对比版本库
新加代码,并add到暂存区
git diff HEAD HEAD^ -- test.py
- 对比版本库与工作区
-
12.删除文件
-
在项目中新建test.py文件,并添加和提交到仓库
– 确定删除处理:
# 删除文件 rm 文件名 # git确定删除文件,对比添加文件git add git rm 文件名 # 删除后记录删除操作版本 git commit -m '删除描述'
– 误删处理:撤销修改即可
# 删除文件 rm 文件名 # git撤销修改 git checkout -- 文件名
-
Git远程仓库
创建github仓库
1 注册github账户
2 创建仓库New repository
3 编辑仓库信息
repository name 必选
description 项目描述,建议写上
public 公有项目,免费的
README 项目说明文件,可选
add gitignore Python
license证书选none,其它的看明白了再选,小心吃官司交罚款
创建仓库完成
4 查看仓库地址
clone or download 选项有一个地址,必须复制下来。
下载别人的,一般都是压缩包。
克隆项目到本地
- 1 克隆远程仓库
cd Desktop/manager/
git clone https://github.com/... .git
- 2 配置身份信息
cd Desktop/manager/test/
git config user.name '管理者'
git config user.email '[email protected]'
在config文件内可以看到
- 3 推送新建的项目文件
在test目录下,新建demo文件夹,内建demo.py
# 工作区添加到暂存区
git add .
# 暂存区提交到仓库区
git commit -m '立项'
# 仓库区推送到远程仓库
git push
可以在github网站看到新推送的文件。
- 在 push 的时候需要设置账号与密码,该密码则是 github 的账号与密码
设置记住密码(默认15分钟):
git config --global credential.helper cache
如果想自己设置时间,可以这样做(1小时后失效):
git config credential.helper 'cache --timeout=3600'
长期存储密码:
git config --global credential.helper store
pycharm编辑器可以自动记住密码
-
4 同步服务器代码
git pull
-
5 关联到远程库
git remote add origin 你的远程库地址
如:
git remote add origin https://github.com/xxx.git
-
6 获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
-
7 本地库内容上传到云端,把当前分支master推送到远程。输入用户名、密码,验证通过后即开始上传。
git push -u origin master
按照上述步骤,同一时间只有一人对代码进行操作,可以进行协同开发。
步骤总结:
1 进入仓库
2 同步下拉代码:git pull
3 本地仓库记录版本:git commit -am ‘版本描述’
4 推送代码到服务器就执行:git push
5 编辑代码前要先pull,编辑完再commit,最后推送是push
但是:
不可避免错误异常,下文。
代码冲突
积微于末,甚于雪崩
多人协同开发,不可避免,代码冲突问题。
多人同时修改某一文件,后上传的,无法正常上传
会影响正常开发进度,一旦出现代码冲突,必须马上解决再进行下一步开发工作。
-
减少冲突的操作方式
养成良好的操作习惯,先pull在修改,修改完立即commit和push
一定要确保自己正在修改的文件是最新版本的
各自开发各自的模块
如果要修改公共文件,一定要先确认有没有人正在修改
下班前一定要提交代码,上班第一件事拉取最新代码
一定不要擅自修改同事的代码 -
解决冲突
1 协商解决,谁冲突谁解决
2 保留所有代码,保留一人代码
3 解决完,依然需要add、commit、push,在版本描述记录下来
标签
大的版本完成更新,对代码进行打包,加上版本标签。(备份大版本代码)
- 打标签
本地:
git tag -a 标签名 -m '标签描述'
推送到远程:
git push origin 标签名
可以在远程github网站查看标签结果 - 删除标签
# 删除本地标签
git tag -d 标签名
# 删除远程仓库标签
git push origin --delete tag 标签名
分支
master 分支 --> v1.0 --> v2.0 -->
dev 分支(开发版本) --> 开发新功能模块 --> 可以合并dev到master
查看当前分支:
git branch
创建并切换到dev分支:
git checkout -b dev
设置跟踪(将分支推送到远程):
git push -u origin dev
管理分支的代码:
add、commit、push
操作一样,但是和主分支是相互独立的。
分支合并:
1 先切换到master分支:checkout
git checkout master
2 dev分支合并到master分支:merge
git merge dev
3 推送合并分支:
git push
4 提醒他人下拉云端代码
git pull