Git操作

学习目标

  • 初步了解Git
  • 安装Git本地服务
  • 创建远程仓库
  • 掌握Git常用命令
  • 了解公司如何使用Git
  • 熟悉常见错误

1. Git的介绍

git是一个开源的分布式版本控制软件,是目前世界上最先进的分布式版本控制系统

2. Git的工作原理

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

流程如下:

  • 【Workspace工作区】                        →添加→     【Index / Stage暂存区】
  • 【Index / Stage暂存区】                    →提交→     【Repository仓库区(或本地仓库)】
  • 【Repository仓库区(或本地仓库)】→推送→     【Remote远程仓库】
  • 【Remote远程仓库】                          →克隆/取→【Repository仓库区(或本地仓库)】
  • 【Repository仓库区(或本地仓库)】→检出→      【Workspace工作区】
  • 【Remote:远程仓库】                       →拉取→     【Workspace工作区】

3. Git文件状态

使用Git管理文件,会有以下四种状态:

  • 未被追踪的(Untracked):在工作区创建了文件,没有添加到[暂存区]。 使用git status -s查看文件状态时,文件名前有“??”标识
  • 已添加至[暂存区](staged):使用了add命令添加了文件到[暂存区]。 使用git status -s查看文件状态时,文件名前有绿色“A”标识
  • 已添加至[暂存区],后修改了文件(Modified):使用了add命令添加了文件到[暂存区],又修改了文件。 使用git status -s查看文件状态时,文件名前有“绿A红M”标识,需要再次进行add操作。
  • 已提交至[仓库区](Committed):使用了commit命令提交文件到[仓库区]。 使用git status -s查看文件状态时,文件已不在待提交列。

  • 补充(以下为文件状态扭转的中间态,了解即可):

  • 已提交至[仓库区],后修改了文件:使用了commit命令提交文件到[仓库区],又修改了文件。 使用git status -s查看文件状态时,文件名前有“红M”标识,需要再次执行commit命令。
  • 已提交至[仓库区],后修改了文件,又再一次添加至[暂存区]: 使用了commit命令提交文件到[仓库区],又修改了文件,又执行add命令添加至[暂存区]。 使用git status -s查看文件状态时,文件名前有“绿M”标识,表示版本已追踪。
  • 已提交至[仓库区],后修改了文件,又再一次添加至[暂存区],又进行了删除: 使用了commit命令提交文件到[仓库区],又修改了文件,又执行add命令添加至[暂存区],再使用rm命令删除文件。 使用git status -s查看文件状态时,文件名前有“绿M红D”标识,表示文件已删除,但可以被恢复。
  • 已提交至[仓库区],又进行了删除:使用了commit命令提交文件到[仓库区],再使用rm命令删除文件。 使用git status -s查看文件状态时,文件名前有“红D”标识,表示文件已删除,但可以被恢复。
  • 首次提交至[暂存区],后删除了文件:使用了add命令添加文件到[暂存区],又执行rm命令删除文件。 使用git status -s查看文件状态时,文件名前有“绿A红D”标识,表示文件已删除,但可以被恢复。
  • 未被追踪的文件,进行删除:未使用了add命令添加文件到[暂存区],直接执行rm命令删除文件。 使用git status -s查看文件状态时,文件名已不存在,表示文件已删除,且无法被恢复。

4. SVN与GIT的区别

1. 工作模式:

    ① git是分布式的,git跟SVN一样有自己的集中式版本库或服务器。但git更倾向于被使用于分布式模式, 也就是每个开发人员从中心版本库/服务器上checkout代码后会在自己的机器上克隆一个自己的版本库。Git的绝大多数操作都只需要访问本地文件和资源,不用连网。

    ② SVN集中式的,只能在同一局域网下进行操作。集中式指所有的文件全部集中在服务器上进行管理。SVN差不多所有操作都需要连接网络,局限性较高。

2. 安全性:

    ① [存储文件]方面,SVN更安全,因为使用局域网保存。

    ② [提交操作]方面,Git更安全。

    ③ [文件备份]方面,Git更安全,更易恢复文件。

5. Git本地服务下载

可以自行去官网下载最新版:git-scm.com或者gitforwindows.org

6. 安装Git本地服务

① 在介绍页点击Next(下一步):


② 点击Browse(浏览),更改到非C盘的路径:


③ 无需选择其他组件,直接点击Next(下一步):


④ 无需更改程序名,直接点击Next(下一步):


⑤ 中间省略多步,都直接下一步即可,直到最后完成,点击Finish(完成):


⑥ 回到桌面,右键。若出现以下图标,则表示安装成功:


7. 创建远程仓库

① 打开浏览器,输入网址:https://gitee.com/ 进入码云官网:


② 点击右上角的【注册】按钮(若有账号,可以直接去登录):


  • [姓名]可输入中文
  • [个人空间地址]建议使用姓名拼音,如果被占用,可再追加数字
  • [手机号]需要真实手机号,后续手机号会作为账号
别忘了在account(账号)文本里,记录码云的账号和密码

③ 点击右上角【+】图标,选择【新建仓库】:


④ 填写仓库信息,并创建:


  • [仓库名称]可以输入中文
  • [路径]不可以输入中文
  • [权限]选择“私有”
  • 其他选择可以不输入、不选择,直接点击【创建】即可

⑤ 创建成功后,会进入到仓库使用说明界面,点击【复制图标】即可复制仓库地址:


8. Git快速体验

① 任意进入一个学习用的文件夹(非C盘):


② 进入文件夹后,右键,选择Git Bash Here(Git命令行),会出现如下窗口:


③ 根据Git仓库的[简易的命令行入门教程]体验Git:


命令解释:

                    
① git config --global user.name "苏芙蓉欧耶"     // 设置全局名称:苏芙蓉欧耶
② git config --global user.email "5603803+sufurong@user.noreply.gitee.com"     //设置全局邮箱:写自己的邮箱
③ mkdir wwt105                           //在当前本地目录创建一个文件夹,名为:wwt105
④ cd wwt105                              //进入wwt105文件夹
⑤ git init                               //初始化当前文件夹,成为本地Git工作区
⑥ mkdir wwt105                           //在当前本地目录创建一个文件夹,名为:wwt105
⑦ touch README.md                        //寻找README.md文件,若不存在该文件,会自动创建
⑧ git add README.md                      //将README.md文件添加至[暂存区]
⑨ git commit -m "first commit"           //将[暂存区]的文件,提交至[仓库区],并写描述“first commit”
⑩ git remote add origin https://gitee.com/sufurong/wwt105.git        //添加指定的[远程仓库]地址
⑪ git push -u origin "master"            //将[仓库区]的文件推送到[远程仓库]的master分支
                    
                

9. Git常用命令


命令 描述
git version 查看当前Git服务版本
git init 初始化文件夹,作为Git工作区
git config --global user.name "小白" 设置全局用户名为“小白”
git config --global user.email 826789@qq.com 设置全局邮箱为“826789@qq.com”
git config --list 查看当前设置项
git clone 仓库地址 克隆某仓库地址上的文件,到本地工作区
git add 文件名 将某个文件添加到[暂存区]
git add 文件名1 文件名2 文件名n... 将某些文件添加到[暂存区]
git add . 将当前所有文件添加到[暂存区]
git status 查看仓库当前的文件状态。
git status -s 简短地查看仓库当前的文件状态。
git diff 比较文件的不同,即暂存区和工作区的差异
git commit -m 文件名 将[暂存区]的某个文件,提交到仓库区
git commit -m 文件名1 文件名2 文件名n... 将[暂存区]的某些文件,提交到仓库区
git commit -m '描述信息' 文件名 将[暂存区]的某个文件,提交到仓库区,并写描述信息
git commit -m '描述信息' 将[暂存区]的所有文件,提交到仓库区,并写描述信息
git commit -am '描述信息' 文件已被追踪,又被修改,该命令可以跳过add操作,直接提交到[仓库区]
git log 查看历史提交记录
git remote add origin 远程仓库地址 添加远程仓库地址
git remote -v 查看远程仓库地址
git pull origin master 将远程库文件中合并到本地
git pull --rebase origin master 远程库文件中合并到本地,–rebase的作用是取消掉本地库中之前的提交
git push origin master 将本地的 master 分支推送到 origin 主机的 master 分支
git push -u origin master 将本地的 master 分支推送到 origin 主机的 master 分支,同时设置之后可以直接使用git push进行提交文件
git branch 查看当前已有的分支(已同步至本地的)
git branch 分支名 在本地新建一条分支
git checkout 分支名 切换到指定的分支上
git push origin 分支名 将本地分支推送至云端
git branch -d 分支名 将指定的分支删除(仅本地)
git fetch origin 分支名 拉取远程指定的分支到本地
git remote remove origin 解除当前远程连接
rm -f 文件名 删除文件,已追踪的文件可以恢复,未追踪的文件不可恢复
git checkout -- 文件名 恢复已被删除的某个文件

10. 测试人员在公司里使用Git场景

场景1:

测试组长:小白,把你的git账号发我,我给你加进公司的git组织里。

你需要:将你注册gitee(码云)的手机号发给组长,让他邀请你进入公司gitee的组织。

场景2:

测试组长:小白,这是公司git远程仓库的地址,测试相关的资料在上面,你拉取下来先熟悉一下。

你需要:
① 在本地新建一个空文件夹
② 执行[git init] 命令,让这个文件夹成为你的[本地工作区]
③ 执行[git remote remove origin] 命令,先解除掉之前学习时的远程仓库
④ 执行[git remote add origin 公司远程git地址] 命令,连上公司的远程仓库
⑤ 执行[git pull origin master] 命令,拉取远程仓库的文件

场景3:

测试组长:小白,把今天写的测试计划上传到gitee上。

你需要:
① 将“测试计划”的文件修改成指定格式,如:XXX项目V121测试计划20230215.doc
② 将该测试计划放到已init过的[本地工作区]文件夹下
③ 执行[git add 文件名] 命令,将测试计划添加到[暂存区]
④ 执行[git commit -m '提交XXX项目V121测试计划' 文件名] 命令,将文件传到[仓库区]
⑤ 执行[git pull --rebase origin master] 命令,同步远程仓库的文件,避免文件冲突
⑥ 执行[git push -u origin master] 命令,将文件推送到远程仓库

场景4:

测试组长:小白,你把刚刚写的测试用例提交到TestCase分支上去。

你需要:
① 将“测试用例”的文件修改成指定格式,如:XXX项目V121测试用例20230215小白同学.doc
② 将该测试用例放到已init过的[本地工作区]文件夹下
③ 执行[git fetch origin TestCase] 命令,将远程的TestCase分支拉取到本地
④ 执行[git checkout TestCase] 命令,切换到TestCase分支下
⑤ 执行[git add 文件名] 命令,将测试计划添加到[暂存区]
⑥ 执行[git commit -m '提交XXX项目V121测试用例' 文件名] 命令,将文件传到[仓库区]
⑦ 执行[git pull --rebase origin master] 命令,同步远程仓库的文件,避免文件冲突
⑧ 执行[git push -u origin master] 命令,将文件推送到远程仓库

11. 常见报错

①. win7电脑执行git push推送命令时报错缺失文件,提示如下:


  • 根据提示上指引,下载安装缺失的文件:.NETFramework,版本=v4.7.2
  • 执行[git remote remove origin] 命令,解除当前远程连接
  • 执行[git remote add origin 远程git地址] 命令,连接远程仓库
  • 执行[git push -u origin master] 命令,推送文件

②. 执行git push推送命令时,报错403,如下图:


  • 找到电脑控制面板→搜索“windows凭据”,删除与git相关的凭据,如下图:
    >
  • 执行[git remote remove origin] 命令,解除当前远程连接
  • 执行[git remote add origin 远程git地址] 命令,连接远程仓库
  • 执行[git push -u origin master] 命令,推送文件

③. 执行git push推送命令时,报错如下图:


  • 执行[git pull --rebase origin master] 命令,拉取远程仓库文件,并取消之前推送动作
  • 执行[git push -u origin master] 命令,推送文件