git的一些操作

【什么是git?】

git又名:开源的分布式版本控制系统,可以有效的、高速的进行项目版本管理(对项目进行版本控制)

【git优点】
1、可以对项目版本进行控制,方便的进行版本切换
2、团队开发:每个开发者都可以在自己电脑上开发好之后,推送到公共的线上仓库进行整合。

【集中式与分布式】(git属于分布式)

分布式:分布在各个地方,多节点(设备),本地和中央服务器都有记录
集中式:集中放在一起,单节点。本地没有记录,每次开发完都要推送到中央服务器

【git结构】

本机结构
分为两大区:工作区和版本库 👇 (分布式版本控制才会在本地具备版本库,集中式只会在中央服务器有版本库)

工作区 —>直接在里面编写代码的文件夹叫工作区。将文件夹变为工作区:git init (执行命令后也会生成对应的版本库 .git)

版本库–>分为 1.暂存区(内存)、2.仓库区(硬盘)

【配置个人信息】(相当于配置个人名片,不会进行校验。)
配置个人信息后,此个人信息将会做为项目的标识符
全局配置个人信息: git config --global user.name “along” # 将本机下的所有项目都设置为 “along” 的个人信息标识符.
git config --global user.email “2450583285@qq.com”

单项目配置个人信息: git config user.name “along” # 将该工作区下的项目设置为 “along” 的个人信息
git config user.email “2450583285@qq.com”

【git基本使用】
查看本机git软件版本:git --version
查看本机版本库状态:git status ----(重要,需要查看状态)

添加文件至暂存区:git add . — 只是临时存放的。相当于存到内存(.代表提交工作区所有文件,可以将. 改为某个文件)
将暂存区的文件提交到仓库区:git commit -m “test v1.0.0” ----提交后暂存区的文件就不存在了,就移到本地仓库区了

查看本地仓库历史提交记录:git log
commit xxxxxxxewaxadasafasf ----版本编号(版本id)
Author: along —提交作者(以上配置的个人信息)
Date: 2022.xx.xx ----提交时间

 test  v1.0.0         ----提交到仓库的版本备注

将暂存区文件提交到仓库区后可以再执行 git status 查看一下工作区的状态是否提交干净。

当代码修改后,成为另一个版本时怎么办呢?

代码修改后继续使用git staus 查看 工作区变动
可以使用git commit -am “test v1.0.1” ----直接提交至本地仓库,无需add添加到暂存区

查看所有分支操作记录:git reflog (强查询)

【版本回退】
【–hard模式举例】(使用git log 查不到回退之前的版本记录,因为他是弱查询)
git reset --hard HEAD^ # 撤销工作区所有未提交的修改内容,将暂存区和工作区都回到上一次的版本,退几个版本就加几个^,在HEAD后也可以用1回退上一个版本2回退上上个版本(git reset --hard HEAD~1)

HEAD^ 上个版本
HEAD^^ 上上个版本,以此类推
HEAD~0 当前版本
HEAD~1 上个版本,以此类推

此时觉得刚刚回退之前的 v1.0.1又比这 v1.0.0 好怎么办?

使用git reflog (强查询) 就能将 所有版本的记录给列出
然后使用 git reset --hard 版本id 即可回退

【各个reset退回模式区别】
–hard模式:会直接让工作区也回退到对应的版本(也就是你正在编辑的代码)
–mixed模式:会将指定reset 的版本退回到暂存区,工作区不变
–soft模式:只回退本地仓库版本

git reset 文件名 或者 . # 将暂存区退回到工作区
git reset # 清空暂存区

【什么时候用什么模式?】

若提交了5个文件到本地仓库,只想回退三个文件,则使用 --mixed模式,先把5个文件退回至暂存区,然后再将三个文件退回到工作区进行继续编辑。
若如提交了5个文件到本地参数,全都需要退回,那么使用–hard模式。全部回退至工作区
若仅仅是需要回退本地仓库的版本,则使用–soft模式。

【分支】(可以理解为镜像)
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

!!切记!!-=一般在分支开发完的功能后一定要交给测试部门,或者仔细测试没问题之后再合并到主分支上=!!

优点:同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可

查看本地所有的分支:git branch (*号代表在哪个分支,弱查询)
查看所有分支详细信息:git branch -v (有版本id的缩写,还有版本备注,强查询)
查看远程所有分支: git branch -a

切换分支:git checkout 分支名 (可以从master分支切换到其他分支,不对主分支进行操作,建议切换一次分支再查看一次分支详情信息)

合并分支(要先切换到主分支再执行):git merge 需要合并的分支名

【合并冲突】
多个分支修改了 同一个文件的同一个位置,一个程序有多种修改方案,就会造成冲突。这个冲突git无法替我们解决,必须人为干预,确定最终的方案。

举例:

master任务需要两人同时进行开发(a开发a功能,b开发b功能),两个不同的功能按理来说是不会引起冲突的,除非修改相同的代码段。
那么当a开发完成a功能之后。b还在开发中。
这时候就要将a代码拿出来测试功能,确认测试功能完毕之后。将a分支与master分支进行合并,这时候master分支的版本库就与a分支的版本库一致(合并后会存在两个一致的版本id号)

此时master分支还没有b分支的代码。那么当b分支开发完毕后,继而与master分支合并,若b分支修改了master分支同样的代码行,那么就会产生冲突。git此时就会将合并过后的master分支上的代码给标注出来:

<<<<<<<<<< HEAD
当前分支的代码

b分支的代码
》》》》》》》》》》》 b (与这个分支起冲突)

让你择其一代码段。将不采纳的代码段给手动(连同git的标注)删除即可。查看git状态后,然后将采纳后的代码继续add或者 git commit -am “最终采纳” 提交到仓库区即可完成master主分支的最新更新

当此时a分支想获取最新代码时,就切换到a分支合并master主分支即可(举一反三,其他分支也是):1. git checkout a 2. git merge master
ps:当然,在a开发完功能合并到主分支上之后,删除掉a分支然后再开一个a分支也是没问题的。(前提是合并后)

删除分支:git branch -d a # 删除a分支

【远程仓库】

在gitee上创建自己的仓库

给自己的电脑添加ssh公钥,让自己的电脑可以与gitee进行安全协议的通信。(这样就不需要登录了)
1.在gitee上找到安全设置—>SSH公钥。点击如何生成公钥。
打开git终端,复制gitee上的第一步骤代码 :ssh-keygen -t 你的id(自己起) -C “公钥名(自己起)”

按三次回车即可。若计算机之前生成有生成过公钥,那么还会有一个提示是否覆盖,一般直接覆盖
2.通过 cat ~/ .ssh/id_你的id.pub ----拿到自己的公钥,复制粘贴到gitee上,完成gitee账号验证即可添加。(建立仓库与本地git链接)

将本机仓库与远程仓库进行绑定:
查看绑定的远程仓库:git remote -v
删除绑定的远程仓库:git remote rm origin # (origin是通道名,也是绑定时建立名字,克隆下来的项目会默认与远程仓库绑定origin这个通道名)

1.直接克隆下来会默认绑定(若不满意可以解绑再重新通过以下方式绑定)

2.手动绑定:git remote add 通道名 仓库地址

绑定后再配置个人信息
git config user.name “along”
git config user.email “2450583285@qq.com”

之后就可以开始写代码了…

写完代码之后正常提交至本地仓库。

push本地分支至远程仓库:git push 通道名 分支名

pull远程仓库至本地仓库:git pull 通道名 分支名

如何解决远程push冲突问题?
在每次编写代码之前,都需要git pull 保证本地的版本是远程的最新版本

【多人开发+远程仓库的妙用】
在多人开发项目时,直接克隆远程仓库就可以拥有所有的分支。然后切换到自己的分之内进行开发。

1、先 git clone 仓库地址 —克隆远程原有代码版本库到本地
2、git branch -a —查看远程所有分支
3、git checkout 分支名 —切换到你对应的分支上(默认在master分支,若新建则在分支名前面 加 -b 空格)
4、git remote update origin -p —跟踪远程分支动态
5、git log -p 当前分支名…origin/远程分支名 —比较两个分支差别(origin是链接名)
6、找出改动之后,在当前分支下确认需要合并远程分支的话:git merge origin/远程分支名 —合并远程分支跟踪到的最新代码。

注意:远程分支是你update的分支。如果远程不是最新的话。那就不需要合并,将本地最新上传至远程即可。

ps【重置当前系统下登录的git账号密码】

git config --system --unset credential.helper (切换git账号时使用)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值