git 的基本操作
一:简介
Git
- Git 是目前世界上最先进的分布式版本控制系统(没有之一)
作用
- 源代码管理
为什么要进行源代码管理?
- 方便多人协同开发
- 方便版本控制
git管理源代码的特点
1.Git是分布式管理.服务器和客户端都有版本控制能力,都能进行代码的提交、合并
2.Git会在根目录下创建一个.git隐藏文件夹,作为本地代码仓库
二:工作区暂存区和仓库区

工作区
- 对于
添加、修改、删除文件的操作,都发生在工作区中
暂存区
- 暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分
仓库区
- 仓库区表示个人开发的一个小阶段的完成
- 仓库区中记录的各版本是可以查看并回退的
- 但是在暂存区的版本一旦提交就再也没有了
三:单人本地操作
1:创建项目(创建文件夹表示工作项目)
2:进入项目,并创建本地仓库.git(新建的本地仓库.git 是空仓库)
(environ) F:\PycharmProject\xpq\django\messageBoard>git init Initialized empty Git repository in F:/PycharmProject/xpq/django/messageBoard/.git/
3:创建本地仓库.git后

4:配置个人信息
(environ) F:\PycharmProject\xpq\django\messageBoard>git config user.name '谢佩琪' (environ) F:\PycharmProject\xpq\django\messageBoard>git config user.email '1909734472@qq.com' (environ) F:\PycharmProject\xpq\django\messageBoard>

5:创建项目
(environ) F:\PycharmProject\xpq\django\messageBoard>django-admin startproject MessageBoard

7.查看文件状态
- 红色表示新建文件或者新修改的文件,都在工作区.
- 绿色表示文件在暂存区
-
新建的项目在工作区,需要添加到暂存区并提交到仓库区
git status
![]()
7:将工作区的文件添加到暂存区
# 添加项目中所有文件 git add . 或者 # 添加指定文件 git add MessageBoard

8:将暂存区的文件提交到仓库区
#commit会生成一条版本记录 #-m后面是版本描述信息 git commit -m '版本描述'

9:接下来我们就可以实现项目代码
- 代码编辑完成后即可进行
add和commit操作 -
提示:添加和提交合并命令
git commit -am "版本描述"
10:查看历史版本
git log
或者
git reflog

git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log 则不能察看已经删除了的commit记录
11:回退版本
通过每个版本的版本号回退到指定版本
git reset --hard 版本号
(environ) F:\PycharmProject\xpq\django\messageBoard>git reflog 827ddc2 (HEAD -> master) HEAD@{0}: commit (initial): <E7><AB><8B><E9><A1><B9> (environ) F:\PycharmProject\xpq\django\messageBoard>git rest --head 827ddc2 git: 'rest' is not a git command. See 'git --help'. The most similar commands are restore reset (environ) F:\PycharmProject\xpq\django\messageBoard>
13.撤销修改
- 只能撤销工作区、暂存区的代码,不能撤销仓库区的代码
-
撤销仓库区的代码就相当于回退版本操作
-
撤销工作区代码
-
新加代码
num3 = 30,不add到暂存区,保留在工作区git checkout 文件名
-
-
撤销暂存区代码
-
新加代码
num3 = 30,并add到暂存区# 第一步:将暂存区代码撤销到工作区 git reset HEAD 文件名 # 第二步:撤销工作区代码 git checkout 文件名
-
-
四:Git 远程仓库
(一):克隆项目
1:创建远程仓库(码云和github都ok)
2:克隆远程仓库
F:\PycharmProject\xpq\django>git clone git@gitee.com:xiepeiqi/message-board.git Cloning into 'message-board'... warning: You appear to have cloned an empty repository. F:\PycharmProject\xpq\django>
3:配置信息
(environ) F:\PycharmProject\xpq\django\message-board>git config user.name "经理" (environ) F:\PycharmProject\xpq\django\message-board>git config user.email "1909734472@qq.com" (environ) F:\PycharmProject\xpq\django\message-board>
4:创建项目
(environ) F:\PycharmProject\xpq\django\message-board>django-admin startproject MessageBoard
5:推送项目到远程仓库
#将工作区的目录提交到暂存区 (environ) F:\PycharmProject\xpq\django\message-board>git add . #暂存区提交到暂存区 (environ) F:\PycharmProject\xpq\django\message-board>git commit -m "立项" [master (root-commit) 853728b] 立项 5 files changed, 179 insertions(+) create mode 100644 MessageBoard/MessageBoard/__init__.py create mode 100644 MessageBoard/MessageBoard/settings.py create mode 100644 MessageBoard/MessageBoard/urls.py create mode 100644 MessageBoard/MessageBoard/wsgi.py create mode 100644 MessageBoard/manage.py #推送到远程仓库 (environ) F:\PycharmProject\xpq\django\message-board>git push Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 4 threads Compressing objects: 100% (7/7), done. Writing objects: 100% (9/9), 2.64 KiB | 902.00 KiB/s, done. Total 9 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-5.0] To gitee.com:xiepeiqi/message-board.git * [new branch] master -> master (environ) F:\PycharmProject\xpq\django\message-board>
(二):多人协同
- 要使用git命令操作仓库,需要进入到仓库内部
- 要同步服务器代码就执行:
git pull - 本地仓库记录版本就执行:
git commit -am '版本描述' - 推送代码到服务器就执行:
git push - 编辑代码前要先
pull,编辑完再commit,最后推送是push
(三):代码冲突
- 提示:多人协同开发时,避免不了会出现代码冲突的情况
- 原因:多人同时修改了同一个文件
- 危害:会影响正常的开发进度
- 注意:一旦出现代码冲突,必须先解决再做后续开发
代码冲突演练
-
1.张三先编辑
login.py文件代码- 进入张三本地仓库:
cd Desktop/zhangsan/info - 拉取服务器最新代码:
git pull - 编辑代码:
num3 = 30 - 本地仓库记录版本:
git commit -am '第三个变量' - 推送到服务器仓库:
git push -
张三本地仓库和远程仓库代码如下:
- 进入张三本地仓库:


-
2.经理后编辑
login.py文件代码- 进入经理本地仓库:
cd Desktop/manager/info/ - 编辑代码:
num3 = 300 - 本地仓库记录版本:
git commit -am '第三个变量' - 推送到服务器仓库:
git push -
以上操作会出现代码冲突
-
提示需要先pull
-
- 进入经理本地仓库:

-
-
-
提示冲突文件
-
![]()
-
冲突代码表现
-
![]()
-
-
-
3.解决冲突
- 原则:谁冲突谁解决,并且一定要协商解决
- 方案:保留所有代码 或者 保留某一人代码
-
解决完冲突代码后,依然需要
add、commit、push -
![]()
![]()
-
提示:如果张三执行
pull没有影响,就算真正解决了冲突代码
(四):标签
- 当某一个大版本完成之后,需要打一个标签
-
作用:
- 记录大版本
-
备份大版本代码

模拟经理打标签
-
1.进入到经理的本地仓库info
cd Desktop/manager/info/ -
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 标签名
(六):分支

- 作用:
- 区分生产环境代码以及开发环境代码
- 研究新的功能或者攻关难题
- 解决线上bug
- 特点:
- 项目开发中公用分支包括master、dev
- 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
- 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
模拟经理分支操作
-
对比:操作分支前的代码
-
1.进入到经理的本地仓库info
cd Desktop/manager/info/ -
2.查看当前分支
git branch-
没有创建其他分支时,只有
master分支
-
-
3.经理创建并切换到dev分支
git checkout -b dev

-
4.设置本地分支跟踪远程指定分支(将分支推送到远程)
git push -u origin dev -
5.经理在dev分支编辑代码
-
6.管理dev分支源代码:
add、commit、push -
![]()
![]()
-
7.dev分支合并到master分支
- 提示:只有当dev分支合并到master分支成功,张三才能获取到
num4 -
7.1 先切换到master分支
git checkout master
-
7.2 dev分支合并到master分支
git merge dev -
![]()
-
7.3 经理推送合并分支操作到远程仓库
-
合并分支默认在本地完成,合并后直接推送即可
git push
-
- 提示:只有当dev分支合并到master分支成功,张三才能获取到
-
8.张三同步经理合并后的
num4-
只有当张三同步代码成功,分支合并才算成功
cd Desktop/zhangsan/info/ git pull
-








浙公网安备 33010602011771号