[笔记-自用]Git-狂神

Git是一种分布式版本控制系统,用于管理文件、目录或工程的修改历史,支持多人协同开发。它有工作目录、暂存区和资源库三个工作区域,提供版本追踪、备份和恢复功能。Git与其他版本控制工具有所不同,如SVN,因为它不需要中央服务器,每个用户都有完整的代码库。Git的基本操作包括添加、修改和提交文件。Git还支持通过分支进行并行开发,解决合并冲突。

Git:

版本控制

  • 版本控制,就是版本迭代,要保留新的版本,但是老版本也不能直接删除,就需要一个版本管理器

版本控制,是一种在开发的过程中,用于管理我们对文件、目录、或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

作用:

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护源代码和文档
  • 统计工作量
  • 跟踪整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

多人开发就必须要使用版本控制,否则有可能使版本不统一

就是用于管理多人协同开发项目的技术

常用的版本控制工具

  • Git
  • SVN
  • CVS
  • VSS
  • TFS
  • Visual Stdio Online

版本控制的分类

  1. 本地的版本控制

    记录文件的每次更新,可以对每个版本做一个快照,如记录补丁文件

  2. 集中版本控制 SVN

    所有的版本都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改

    多个人提交代码,如果两个人发生了冲突,就需要考虑权衡

  3. 分布式版本控制 Git

    • 每个人都拥有全部的代码,会有一定的安全隐患

    • 每个电脑上都有自己的版本控制中心,所有的版本信息仓库全部同步到本地的每个用户,不会因为服务器的损坏或网络原因造成不能工作的情况

    • 提交时可以离线在本地提交,只需要联网时push到相应的服务器即可

    • 由于每个用户保存的是所有的数据,只要一个人设备没有问题,就可以恢复所有的数据请添加图片描述

Git与SVN的一些主要区别

SVN是集中式版本控制系统,版本库是集中在中央服务器的。在工作的时候,用的是自己的电脑,所以需要先从中央服务器得到最新的版本,然后工作;工作完成后,把自己的代码上传到中央服务器

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网。协同的方法:比如在自己的电脑上改了文件A,其他人也在电脑上改了文件A,你俩之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了

Git环境配置

软件下载

git官网:Git - 下载 (git-scm.com)

淘宝镜像下载

环境变量只是为了全局使用而已,现在我们可以随时使用右键打开git命令行窗口,不配置也依旧可以使用。Git安装的时候就已经帮我们配置好了

右键打开Git Bash命令行窗口

命令就是Linux的命令

查看Git配置

$ git config -l

clear清除命令,查看完配置后都需要清除

git相关的配置文件

  1. git的配置全在etc目录下,etc中的gitconfig文件中就是git的系统配置(system):C:\Java\Git\git\etc\gitconfig

    $ git config --system --list
    
  2. 用户的配置(global),在用户的电脑下:C:\Users\天马行空.gitconfig

    $ git config --global --list
    

    安装git后首先要做的就是设置用户名和Email地址。因为每次Git提交都会用到该信息。他被永远嵌入到你的提交中

    编写用户的配置:

    $ git config --global user.name "cjy"
    
    $ git config --global user.email "345312589@qq.com"
    

Git基本理论

  1. 工作区域

    Git本地有三个工作区域:工作目录暂存区资源库。和远程的一个git仓库

请添加图片描述

  • 本地目录:工作区,就是你平常存放代码的地方

  • 暂存区:用于临时存放你的改动,实际上就是一个文件,保存即将提交到文件列表的信息

    .git文件夹中的文件就是暂存区的

  • 本地仓库:仓库区,就是安全存放数据的位置,这里有所有版本的数据。其中HEAD指向最新放入仓库的版本

    .git中的HEAD文件,内容为ref(指向):路径为主分支,将代码提交到主分支上

  • 远程仓库:托管代码的服务器,用于远程数据交换

  1. 工作流程:

    1. 在工作目录中添加、修改文件 ==》UserMapper.xml
    2. 将需要进行版本管理的文件放入暂存区域 ==》git add .
    3. 将暂存区域的文件提交到git仓库 ==》git commit

    因此,git管理的文件有三种状态:已修改、已暂存、已提交

请添加图片描述

Git项目搭建

  • 在本地仓库搭建 init

    1. 在任意工作目录下右键Git Bash

      输入命令

      $ git init
      

      将项目初始化,自动生成.git的隐藏文件夹

  • 克隆远程仓库到本地 clone

    1. 将远程服务器上的仓库完全镜像一份至本地

      克隆狂神创建的项目和它的整个代码历史

      $ git clone https://gitee.com/kuangstudy/kuang_livenote.git
      

      done.下载完毕

Git文件操作

文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先需要知道当前的文件是什么状态

  • Untracked:未跟踪,新建的文件在本地的文件夹中,没有添加到git库,不参与版本控制,通过git add状态变为暂存
  • Unmodify:文件已入库,但未修改,即版本库中的文件快照和文件的内容一致;这种类型的文件,有两种去处
    • 如果被修改,就变为Modified状态
    • 如果使用git rm命令移出版本库,则变为Untracked状态
  • Modify:文件已修改,仅仅是修改,并没有进行其他的操作。这种文件也有两种去处
    • 通过git add命令可以进入暂存状态
    • 使用git checkout命令则丢弃修改过,返回到Unmodify状态,git checkout命令就是从库中取出文件,覆盖当前的修改
  • Staged:暂存状态
    • 执行git commit将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态
    • 执行git reset HEAD filename取消暂存,文件状态为Modified

查看文件状态

查看指定文件状态

git status [文件名]

查看所有文件状态

$ git status

添加所有文件到暂存区

git add .

提交暂存区的内容到本地仓库: -m提交信息

git commit -m "new file [文件名+扩展名]"

忽略文件

我们不需要把某些文件纳入版本控制中,如数据库文件、临时文件、设计文件等

在项目目录下建立.gitignore文件,此文件有以下规则

  1. 文件默认存放的是不上传的文件名
  2. 以空格或#开始的行为注释
  3. 星号(*)代表多个字符;问号(?)代表一个字符;方括号([])代表可选字符的范围;大括号({})代表可选的字符串
  4. 感叹号(!)代表不被忽略的规则和文件
  5. 名称前面的/,忽略上一级的文件下的文件,但该文件不会忽略
  6. 名称后面的/,忽略该文件夹下的文件
# 注释
*.txt        #忽略所有.txt的文件
!lib.txt     #但lib.txt除外
/temp        #仅忽略上一级目录的文件,temp中的文件不忽略
build/       #忽略build下的所有文件
doc/*.txt    #忽略doc文件夹下的所有.txt文件
  • git对于.gitignore配置文件是按照从上到下进行规则匹配的,前面的规则范围更大,后面的规则就不生效
  • 已经push了项目,那么再在.gitignore文件中写入新的过滤规则,也不会起作用,Git仍然会对所有的文件进行版本管理。此时可以从暂存区移出,在工作区保留:git rm -r --cached (文件名)

使用码云

gitub是有墙的,一般使用码云(gitee),公司有时候会搭建自己的gitlab服务器

  1. 创建gitee账号

  2. 设置本机绑定SSH公钥,实现免密码登录。码云是远程仓库,我们平时工作是在本地仓库

    1. 进入用户目录:C:\Users\天马行空
    2. 输入ssh-keygen -o生成.ssh文件及公钥
    3. 已有.ssh文件夹,在文件夹中输入ssh-keygen生成公钥
  3. 生成完之后.ssh中出现两个文件id_rsa和id_rsa.pub

    .pub是公共的,另一个是私钥,将公钥打开,粘贴到网址SSH公钥 - Gitee.com上并提交

请添加图片描述

  1. 使用码云创建一个自己的仓库

    • 开源许可证GPL-2.0 、GPL-3.0开源是否可以随意转载,不能商业使用

    • 将仓库克隆到本地

      出现需要验证账号密码是因为项目是私有的

IDEA中集成Git

  1. 将项目从git远程仓库中下载到本地文件夹

  2. 新建项目,绑定git

    1. 在git本地仓库创建项目,项目名与本地仓库项目名相同
    2. 创建项目名不同的项目,然后将我们本地的git相关文件拷贝到该项目中即可

在这里插入图片描述

  • 文件的颜色就是选中的状态,绿色:已提交;红色:未提交
  1. 修改文件,使用IDEA操作git

    1. 添加到暂存区
    2. commit提交
    • 右上角有IDEA集成的git便捷操作

      • 在IDEA上提交,可以点对勾,提交变更到本地文件,注意需要写提交信息,一般是说明变更的地方

      • 也可以在终端中输入git add .git commit -m" "命令提交到本地

    • 左下角的Git有git远程及本地仓库的全部信息

  2. 提交测试,push到远程仓库

    输入命令git push,就提交到了远程仓库

Git分支

master为主分支

dev开发用分支

v4.0不同版本的分支

git中常用的分支命令

  • 列出所有本地分支

    $ git branch
    
  • 列出所有远程的分支

    $ git branch -r
    
  • 新建一个dev开发者分支,但仍然停留在当前分支

    $ git branch dev
    
  • 新建一个4.0版本分支,并切换到该分支

    $ git checkout -b v4.0
    
  • 切换到主分支master

    $ git checkout master
    
  • 将本地分支v4.0上传到远程

    $ git push origin v4.0
    
  • 删除本地分支

    $ git branch -d v4.0
    
  • 删除远程分支

    # 直接输入分支名v4.0
    $ git push origin --delete v4.0
    # 分支在远程仓库的origin目录下,所以需要origin/+分支名
    $ git branch -dr origin/dev
    
  • 合并指定分支到当前分支

    # git merge 分支名
    

    如果多个分支并行执行,就会导致我们的代码不冲突,也就是同时使用多个版本

    比如,一个项目部,要做一个web项目

    web-api - A(编写了代码)

    web-admin - B会调用A的代码(修改了A的代码)

    web-app - C会调用B和A的代码

    A编写了代码,B修改了A的代码并提交,A从远程获取的代码时,发现代码变了,就可以选择从哪个分支下载代码,也可以判断是否需要将B修改的代码提交到的分支 合并到 自己的分支

    如果同一个文件在合并时修改的内容产生了冲突,我们可以在自己的分支上保留他的还是自己的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值