当前位置:   article > 正文

一、Git

一、Git

1.1 git是什么

  • git是目前世界上最先进的 分布式版本控制工具(没有之一)

  • git有什么特点?

  • 版本控制工具

就是帮助我们管理不同版本的文件的一个应用程序
  • 1

1.2 git诞生

2000年之前,linus自己手动维护linux的版本代码
2002之后到2005年,使用的免费的bitkeeper
2005年之后,linus开发git
  • 1
  • 2
  • 3

1.3 集中型版本控制工具和分布式控制工具

1.3.1 集中型版本控制

  • svn,cvs,vss等
特点:
1、实现大部分开发中对版本管理的需求
2、结构很简单,上手容易

缺点:
1、对中央仓库依赖严重,一旦损坏了,历史数据难以恢复
2、程序员上传的都是完整版,如何追溯查询?
3、系统正在上线运行,需要修改bug或增加几个不同的功能,持续几个月的时间。如何同时管理几个版本
4、如果管理一个分布在世界各地且互不相识的大型开发团队

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述


1.3.2 分布式版本控制

  • 在每个PC端有一个 git本地库,同时还有一个github集中库(用于协同开发)。保证即使github出现问题时,git本地库依然能正常工作
    在这里插入图片描述

1.4 git的作用

1、协同开发
2、版本记录
3、冲突解决
4、历史追查
5、代码备份 
6、版本还原
7、权限管理
8、分支管理
9、代码审查
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.5 git安装

  • 最早的git实在Linux上开发的,很长一段时间中,git只能在linux和unix上运行。不过,后来有人把他一直到windows平台。现在git可以在linux、unix、mac os和Windows几个主流平台上运行

  • 要使用git,第一步当然是安装(window安装

1.5.1 在Windows中安装git

1、方式一

命令行工具:git for windows(重点)
https://git-for-windows.github.io/
  • 1
  • 2

2、方式二

可视化工具:TortoiseGit
https://tortoisegit.org
  • 1
  • 2

3、方式三

idea、pycharm插件(掌握)
  • 1

4、方式四

github网站(掌握)
http://www.github.com
  • 1
  • 2

1.6 配置git签名

  • 第一步
选中你要作为git工程存放的目录,然后单击鼠标右键选 择 git bash 即可
  • 1
  • 第二步
① git是分布式版本控制工具,所以我们需要填写 用户名和邮箱作为一个标志(用于识别上传代码的所有者)
② 在 git bash中使用:
git config --global user.name "gyh"
git config --global user.email "xxx@163.com"(注意:此处应该与github账号保持一致)
添加标志
③ C:\Users\用户名路径下 .gitconfig 文件,这个我文件里面可以看到--global属性,所有的git项目都会公用这个属性(所配置的git信息会保存在此文件中)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述


1.7 创建版本库

1.7.1 第一步 选中一个git工程的目录

git bash
  • 1

1.7.2 第二步 输入命令初始化版本库(本地git库)

git init
  • 1

在这里插入图片描述

  • 在对应文件目录中会创建一个 .git 文件,用于保存历史版本的文件
    在这里插入图片描述

1.8 git命令行操作

1.8.1 查看文件状态

git status
  • 1

1.8.2 将文件/目录添加到临时暂存区

git add 文件名 (or 目录名)
e.g.
git add src/XXX.xxx
tip:
以上通过git add 命令的文件会提交到暂存区中,但是这里的文件其实没有真正的提交。使用下一个命令才是把它提交到一个统一的版本文件
git commit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.8.3 提交文件

git commit
tip:
① 会进入到一个Vim编辑页面,将临时暂存区中的信息自动添加进去,并且提示让用户添加此次 git commit 的备注文字信息
② commit后,git status 中的信息会被清空

git commit -m "备注信息"
tip:
① 不用进入vim界面,直接进行commit
② 每当有文件被修改/添加/删除的时候,都需要重新git add,然后再 git commit 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.8.4 查看日志

git log
tip:
可以查看历史 git commit 执行的信息

e.g.
git log --pretty=oneline
tip:
打印历史提交的简要信息(序列号,备注信息)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

在这里插入图片描述


1.8.5 回退历史

  • 回到上一次提交
git reset --hard HEAD^1
tip:
① HEAD是一个指针,永远指向最新版本
② ^1:表示让HEAD指针指向上一个版本
③ 执行的原理就是修改HEAD指向的位置

git reset <选项> HEAD^1
选项:
① --hard:这种回顾不但可以将版本回顾,还会将处于此版本后面提交的版本均删除。不会保留任何你修改的记录
② --soft:可以回退版本,也会保留改动的记录,会自动的git add
③ --mix:可以回退版本,并会保留所有改动记录。但是不会自动帮你git add

注:这种方式可以恢复到之前某个提交的版本,但是恢复到的版本的之后版本将不复存在。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

  • 回到到多个版本
git reset --hard HEAD~2 # 回退到2个版本之前的版本
  • 1

  • 版本穿越(实际使用)
git reflog # 查看历史记录的版本号
e.g.
$ git reflog # 查看历史记录的版本号
c31f760 (HEAD -> master) HEAD@{0}: commit: del 2 file
e6b9e41 HEAD@{1}: commit: 3.txt
31e9b0e HEAD@{2}: reset: moving to HEAD^1
052576e HEAD@{3}: commit: 3.txt
31e9b0e HEAD@{4}: commit: add 2.txt
41e4b7b HEAD@{5}: reset: moving to HEAD~2
8b46ac0 HEAD@{6}: commit: test add 2
dcb0c5c HEAD@{7}: reset: moving to HEAD^1
d0d6fe2 HEAD@{8}: commit: test2
dcb0c5c HEAD@{9}: commit: test 1
41e4b7b HEAD@{10}: commit: submit 2
496fb08 HEAD@{11}: commit (initial): this is my first commit!

e.g.(穿越回之前的版本,写入唯一标识码,同时不会清除其之后的版本信息)
git reset --hard 052576e
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

1.8.6 还原文件

git checkout 文件名 # 用于将指定文件回退至git中保存的内容状态
e.g.
git checkout src/a.txt
注:git checkout 不会返回历史文件
  • 1
  • 2
  • 3
  • 4

1.8.7 删除文件

① 删除文件
② git add
③ git commit
  • 1
  • 2
  • 3

1.9 工作区、暂存区、本地库

1.9.1 概念

  • 工作区(Working Directory):电脑的本地磁盘目录
  • 本地库(Repostory):工作区中有一个隐藏目录 .git,他就是 git的本地版本库
  • 暂存区(stage):一般存储在 .git 目录下的index文件,所以我们有时候把暂存区也叫做索引

在这里插入图片描述


1.10 分支

1.10.1 分支的概念

  • 应用场景
项目已经上线了,但是又有新的功能需要开发(或存在BUG需要修改),需要在保持项目仍在上线的情况下,进行处理
  • 1

在这里插入图片描述


1.10.2 查看分支的指令

git branch -v
e.g.
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch -v
* master fbd5f53 add a.txt

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.10.3 创建分支

git branch 分支名称
e.g.
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch common
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git branch -v
  common fbd5f53 add a.txt
* master fbd5f53 add a.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.10.4 切换分支

git checkout 分支名
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git checkout common
Switched to branch 'common'
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (common)
$ git branch -v
* common fbd5f53 add a.txt
  master fbd5f53 add a.txt

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.10.5 合并分支(将其他分支合并到主分支上:master)

1、切换到主分支
git checkout master

2、合并
git merge 分支名
e.g.
git merge common

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.11 冲突

1.11.1 什么是冲突

冲突一般指同一文件同一位置的代码,在两种版本的仓库合并时,版本的管理软件无法判断到底应该保留哪一个版本,因此会提示该文件发生冲突,冲突一般都需要程序员手动解决。
  • 1

1.11.2 在分支合并的时候解决冲突

① 在主分支上新增文件conflict.txt,并提交git
② 在common分支上新增文件conflict.txt,并提交git
③ 在master分支上合并common,发生冲突
Gaoyonghao@LAPTOP-49L72UVH MINGW64 /d/Workspace/Git/git1st (master)
$ git merge common
Auto-merging src/confilct.txt
CONFLICT (content): Merge conflict in src/confilct.txt
Automatic merge failed; fix conflicts and then commit the result.

④ 查看冲突
git diff

⑤ 解决冲突:切换到出现冲突的目录,然后查看文件,手动编辑问题区域

⑥ 重新 git add 和 git commit 即可
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/981233
推荐阅读
相关标签
  

闽ICP备14008679号