git基本命令的使用以及使用原理的总结

1.集中型的版本控制工具和分布式版本控制攻击的区别

1.1 集中型的版本控制工具

  • SVN,CVS,VSS
    优点:
    1)实现大部分开发中对版本管理的需求
    2)结构简单,上手容易
    缺点
    1)对中央仓库依赖严重,一旦损坏了,历史数据怎么回复?
    2)程序员上传的都是完整版的,如何追溯查询》
    3)系统正在上线运行,需要改bug或增加新功能的时候,这时候如果管理这些不同操作版本?
    4)如何管理第三方开发
    在这里插入图片描述
    1.2 分布式版本控制工具

git的诞生便可以解决集中式版本控制工具带来的问题
git的作用:

  • 协同开发
  • 版本记录
  • 冲突解决
  • 历史追溯
  • 代码备份
  • 权限管理
  • 分支管理
  • 代码审查

在这里插入图片描述
2.使用git,首先要安装–再windows中安装git

2.1 git的安装
在这里插入图片描述
3.初始化本地参考以及基本命令的使用

3.1 配置签名以及初始化本地仓库

  • 选中你要作为git工程存放的目录,然后单击鼠标右键选择git bush即可,如下图:

  • 在这里插入图片描述
    便进入如下页面
    在这里插入图片描述
    注意:git是分布式版本控制工具,所以我们需要填写用户名和邮箱作为一个标志。
    可以在你电脑的C:\Users\用户名路径下的.gitconfig文件,这个文件里面可以看到–global属性,所有的git项目都会公用这个属性
    我的如下:
    在这里插入图片描述
    然后在git下输入以下命令完成签名(这是你只要要将项目代码push到远程的github上的准备,也是你的身份的一个标识)

  • git config --global user.name "xxxx1"

  • git config --global user.email "xxxx2"
    tips: 这里的xxx1和xxx2分别是你在.gitconfig文件下看到的用户名和邮箱账号
    上面命令执行完成之后,执行以下命令初始化本地仓库

  • git init

在这里插入图片描述
3.2 基本命令的操作
1)查看文件状态

  • git status

2)将文件/目录添加到git的临时暂存区

  • git add 文件名/目录名
    比如:git add src/HelloWord.java
    注意:通过git add 命令的文件提交到暂存区中,但是这里的文件并没有真正的提交,使用git commit 命令才是把他提交到一个统一的版本文件

3)提交文件

  • git commit

注意:当有文件被修改的时候/添加/删除的时候,都要重新git add,然后再git commit

4)查看日志

  • git log
  • git log --pretty=oneline

如下:
在这里插入图片描述
上面命令的举例使用如下:
在这里插入图片描述
5)回退历史
**说明:**当你对同一个文件进行了多次修改之后,你想回退到之前修改得到历史记录,那么可以使用

  • git reset --hard HEAD^1
    说明:HEAD是一个指针,永远指向最新版本,^1表示让HEAD指针指向上一个版本

在这里插入图片描述

6)回退到多个版本

  • git reset --hard HEAD^2 (回退到2个版本之前的版本)

7)当你向回退到指定的版本号时

  • 先使用 git reflog 查看历史记录的版本号
  • 再使用git reset --hard id(便可以回退到指定id的版本号,这个id可以通过上个命令查看到)
  • 具体举例如下

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.工作区、缓存区、本地库

4.1 概念

  • 工作区:电脑本地的磁盘目录
  • 暂存区:一般时.git目录下的index文件,所以有时候我们把暂存也叫做索引
  • 本地库:工作区中有一个你最初使用git init初始化的 .git 目录,这个就是git的本地版本库

下面我简单描述以下三者之间的关系(工作原理)
1)首先我们创建一个名为code的目录,我们想将其作为git工程存放的目录,然后对其进行签名和初始化等操作之后,你便可以在该目录下进行你的项目开发;
2)这是当你产生了心得文件之后,你要将其上传到git本地仓库中,那么就是需要进行两个步骤

  • git add (将工作区的文件上传到git暂存区)
  • git commit (再上传到本地仓库,即git的版本库
    在这里插入图片描述

5.分支介绍

说明:
当项目已经上线了,但是产品经理又提供了心得需求,评估实现这个新功能需要一定的时间,但是项目还是需要在线上运行,同时又不能避免bug的修改,因此,分支就应运而生了;分支就是用来协助管理不同版本的独立开发的;最后所有分支才会合并为主分支上master
在这里插入图片描述

5.1分支的相关命令
1)新建分支

  • git branch common

2)查看分支

  • git branch -v

3)切换到指定分支

  • git checkout common

如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
4)合并分支
合并分支的步骤:
1)首先要先切换带到主分支下

  • git checkout master

2)再使用git merge 分支名 合并分支

  • git merge 分支名
    比如:git merge common
    在这里插入图片描述

6.冲突

说明:
冲突一般是值同一个文件同一个位置的代码,两种版本的仓库合并时,版本的管理软件无法判断到底应该保留哪一个版本,因此会提示该文件发生冲突,冲突一般都需要程序员手动解决
在这里插入图片描述
在这里插入图片描述

7.GitHub的介绍以及使用

(这里主要介绍多人开发的情况)
在这里插入图片描述
1.开发者A的操作

1.1 建立本地仓库
在这里插入图片描述
1.2 使用你的github站好创建一个远程仓库,便可到远程仓库的url地址
在这里插入图片描述
在这里插入图片描述

1.3 推送代码到远程仓库
1)首先是增加远程地址

  • git remote add 远程代号 远程地址
    例如:git remote add origin https://github.com/rock…/kongfu.git(这里地址只是举例说明)
    说明:
    远程代号:指远程连接的代号,一般直接使用origin做代号,也可以自定义
    远程地址:即是你再github上新建项目的仓库地址url

2)然后再推送到远程库

  • git push 远程代码 分支名
    如:git push origin master
    在这里插入图片描述
    以上便是开发者A的操作

2.开发者B的操作
2.1 从GitHub上下载远程代码

  • git clone url 项目目录名
    例如:git clone https://github.com/rock…/kongfu.git kongfu
    说明:
    -url:是开发者A上传到github的远程仓库地址
    -项目目录名:指为克隆项目在本地新建一个目录名,可以不填,那么会默认使用github的仓库名

2.2 开发者B进行修改文件
主要命令:

  • git add 文件内目录
  • git commit -m ”log“
  • git push origin master (这里是开发者B将其代码推到分支master下,这个master分支也就是开发者A的分支)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
总:
在这里插入图片描述
开发者B将修改的文件成功上传到远程github之后,那么开发者A也需要同步跟新代码

  • git pull 远程代号 远程分支

在这里插入图片描述
总结:
即是开发者A在其本地完成了自己的项目代码之后,其上传到了远程仓库GitHub上了;
那么由于是多人开发,可能对应不同的功能模块,那么开发者B要将开发者A的代码克隆到本地,或进行一些代码修改,修改完成之后,也需要提交上传到远程仓库github;于此同时,开发者A要同步B修改的代码,也要重新下载同步代码到本地…如此进行下去

8.协作冲突

在这里插入图片描述
如:B后来提交的文件与A先前提交的文件发生了冲突,那么此时开发者B是哟了那个命令:git push origin master想将代码推到master分支(A)上是不可以的,同时,想通过将代码下载到本地再修改也是不行的,如下:
在这里插入图片描述
那么就需要人工进行冲突处理
1)首先使用命令查看文件

  • ll
    在这里插入图片描述

2)然后使用命令手动修改冲突文件(这里举例冲突文件为打狗棒法.txt)

  • vi 打狗棒法.txt
    进入打狗棒法.txt文件如下
    在这里插入图片描述
    3)经修改之后,需要使用命令git add、git commit提交再使用push将其推倒特定分支下(这里举例的分支是master也就是开发者A这个分支)
    在这里插入图片描述

9.第三方团队参与的场景
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_46872121/article/details/111396852