git基础操作流程

139 阅读8分钟

一、概念

git 命令速查表

1、 git的作用

方便多人协作(同时) 共同开发(编辑代码/文本) 同一项目。

2、git 的前辈:SVN

SVN

SVN是Subversion的简称,是一个开放源代码版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

SVN 作用和 git 一致,这是 SVN很多功能要比 git 弱的多...

举个栗子:SVN 会随着开发人数的变多、开发时间的变长,文件的体积变大的非常快...

而 git 相对好很多...

3、git 仓库

(1)作用:在个人电脑硬盘(用于存储数据)的基础上虚拟出了git 仓库

若将硬盘上的代码/文本放入git仓库,则可以将 git 仓库推送(push)至 git 远程服务器(github.com/gitee.com),只要将 git 仓库推送至远程的 git 服务器,则团队中其他人则可以将 git 仓库拉取(pull)到本地。以达到多人协作、共同开发同一软件的目的。

4、公钥 - SSH

(1)作用:本地电脑生成公钥,放置于 gitee.com 的SSH公钥中,使得后续本地的 git 仓库推送至远程,不需要输入用户名和密码。

(2)执行流程

git bash here

5、git工作流程图

git工作流程图

  • 硬盘(workspace)
  • 暂存区(staging)
  • 本地git仓库(local repo)
  • 远程git仓库(remote repo)

6、暂存区 - staging

暂存区是本地硬盘和本地仓库的中间环节。

只能将暂存区等文件放入本地库。

可以指定本地硬盘哪些文件需要放入本地仓库中。

7、VSCode关于快捷方式和概念

(1)「更改」 -> 「放弃所有更改」:表示将硬盘中与本地仓库不同的文件和代码,全部删除。

(2)「暂存的更改」-> 「取消暂存更改」:表示将暂存的代码重新放回本地硬盘。

(3)「提交」表示git add .+git commit -m '描述信息'

(4)「同步更改」表示git push origin master

(5)「右上角...」里面所有的 git 操作的快捷方式。

(6)「右下角」显示当前所在分支,点击右下角会有本地分支和远程分支。

VScode 插件:GitLens -> 作用:能查看每一行代码写的作者是谁。

8、开源仓库和私有仓库

(1)开源仓库:即将代码在网络上公开;可以被任何人使用、查看。

(2)私有仓库:即只有该仓库的相关成员才有权限查看和编辑。

(3)仓库相关角色

1)管理员:即创建者和可以编辑仓库的成员,都为管理员 - maintainer

2)创建者 - owner ( gitlab )。

3)开发者 - developer。他的权限比管理员要低,一般是普通的程序员;负责开发具体的功能;而没有完全版的仓库管理权限。

9、PR-pull requests

1、中型项目前端团队的组成:

(1)前端负责人 - leader

职能:负责项目的搭建(git init);技术选型;难点技术攻克;代码审查/code Review。

(2)普通的开发者 - developer

职能:负责具体的功能模块的开发;

普通的开发者功能开发完毕,其代码不能直接推送到主分支,只能推送到自己的分支,所以这就需要我们自行创建分支,然后PR申请合并到主分支~

2、描述

普通程序员功能开发完毕,如何将自己的代码,通过 PR 流程,最终将自己的代码合并到 master 分支上:

(1) developer 在得知自己的开发需求后:要建立自己的开发分支:从主分支上建立自己的分支。

补充:一般的分支类型:

        • feature/具体的分支名  ->  功能分支,即开发某个具体的新功能
        • bugfix/具体的分支名  ->   要修复bug的分支

(2)切换完分支,开发完功能/修复 bug 后;将自己的本地分支推送到远程上。

(3)在 gitee.com 上建立  PR Pull Requests 申请;申请将自己开发完毕的代码,合并到 master 分支上。

申请流程:

        • 指定自己的分支合并到 master 上。
        • 指定审批代码的领导。(测试的代码review 非常少见)

(4)领导进行代码review

if 代码review不合格:领导将代码驳回; 程序员重新修改,修改完毕重新提交代码 PR;else 代码review合格:领导将申请的 PR 分支合并进主分支;

则主分支具有了提交 PR 分支中的代码。

3、项目主分支的作用

项目的上线(代码打包发布到 生产环境),一般情况下都是打包的主分支的代码 - master。

10、PR流畅中常见状况

1、远程的分支与本地的分支:commit信息不一致,但代码未发生冲突:

合并的时候会有的问题提示:

解决办法:将远程的commit(合并进本地的)和本地的commit信息,重新再打一个新的 commit 信息。

2、远程的分支与本地的分支:commit信息不一致,且远程代码与本地分支代码发生冲突。

合法的时候会有提示代码发生冲突:

解决办法:需要找到写代码冲突的人,两人一起决定保留什么代码!然后重新再打一个新的 commit 信息。

11、gitignore

项目的根目录下建立 一个文件 .gitignore

作用:但凡在该文件没配置的文件名/文件夹名,则都不会被保存到 git仓库 中。

二、git流程

1、虚拟/初始化出 git 仓库

git init在当前文件夹下初始化了 git 仓库

注:会在当前文件夹下生成一个.git的隐藏文件,该文件即为git仓库

强调:git 仓库必须在指定文件夹下进行初始化。

2、将硬盘上的代码装入 git 仓库中

(1)git add .

1).表示 all 的通配符

2)作用:将指定文件放入暂存区。->后续执行 commit 可以将暂存区中的文件放入 git 仓库。

(2)git commit -m '自定义描述'语言,用于描述存入git仓库的语言

1)作用:将暂存区文件放入 git 仓库。

注:VSCode中,当文件名变为白色字,则表示该文件硬盘与git仓库保持了同步。

3、打印所有 commit 信息

(包括 commit 作者、创建时间、左右邮箱和哈希值)

1、git log查看信息

2、q英文状态下,退出 -> quit

哈希值:7eed2aa3406faac2253a8b007dca10beca0492ce

哈希值作用:通过哈希值(唯一性)能迅速定位到commit

4、将本地已有仓库推送至远程服务器

(1)git remote add origin https://gitee.com/${自己的账号}/${远程的仓库名字}.git

(2)git push -u origin "master"

5、git 分支

(1)创建分支

1)git checkout -b 新分支名称

2)作用:基于当前分支创建了一个新的分支。

强调:分支的创建即从当前分支新舰出一个分支,是以当前分支所有的 commit 信息拷贝出一份,作为新的分支commit 链信息。

(2)默认分支

默认分支的分支名 - master,又称为主分支。

(3)切换分支

git checkout 已存在分支名

(4)查看当前所有分支

git branch

(5)合并分支

1)git merge 要合并进来的分支名

注:合并之前必须保持当前分支 git 仓库与硬盘一致。

2)合并会出现的冲突情况

(以master分支合并D分支为例)

3)解决冲突后需要再次输入命令,书写commit 命令表示解决冲突。

(6)将新的分支推送到远程上

切换到新的分支 -> git push origin 新的分支名

6、回滚/回溯

(1)git reset --hand 之前commit的哈希信息

(2)作用:代码回滚/回溯

强调:尽量不要这么操作。

7、git fetch

假设场景:其他开发者,向远程推送了分支,本地 vscode 快捷方式无法得知远程有哪些分支,则可以通过git fetch 获取得知远程有哪些分支。

三、git实操

1、桌面新建文件夹

2、VSCode打开新建的文件夹,打开VSCode终端

3、初始化仓库

git init

4、将硬盘上的代码装入 git 仓库中

新建文件

(1)编辑保存后的文件状态

(2)输入git add .后的文件状态

(3)输入git commit -m '描述语言'后的文件状态

5、git log查看 commit 信息

6、gitee.com新建仓库

仓库

7、创建分支

git checkout -b 新的分支名

8、将分支推送到远程上去

git push origin 新的分支名

四、PR流程

假设要开发了一个新的功能的必备流程:

1、克隆仓库

git clone 仓库路径

2、同步代码拉取远程master代码

在master分支上,拉取远程最新的 master 代码。(确保本地的master是最新的代码)。

git pull origin master

3、从master分支上创建一个新的功能分支

git checkout -b 分支名

在当前分支下进行代码编译...

git add .||指定文件名+git commit -m '自定义描述'

将workspace文件放到staging上;

将staging文件放到local repo

4、新的分支开发完毕

git pull origin master

当前分支执行此命令,同步远程master最新代码(以防远程提交PR造成代码冲突,若有冲突,则在本地解决冲突)

4、将本地分支推送至远程上

git push origin 分支名

5、进行 PR 提交

本文正在参加「金石计划」