VS中git概念解析与深度使用
基础概念
四个区
- 工作区(Working Area)
- 暂存区(Stage)
- 本地仓库(Local Repository)
- 远程仓库(Remote Repository)
五种状态
- 未修改(Origin)------工作区
- 已修改(Modified)&未追踪(Untracked)------工作区
- 已暂存(Staged)-------暂存区
- 已提交(Committed)--------本地仓库
- 已推送(Pushed)---------远程仓库
储藏和暂存
“储藏“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
使用“储藏“的现实场景比如当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。
将你当前工作区代码储藏后,工作区这些代码会消失回到修改前的状态。
重新应用储藏的修改必须没有未提交的更改否则报错
储藏的修改如果被修改了那还原储藏的时候会出现 代码冲突,需要手动调节
“暂存”就是提交一次更改就是提交一次更改的前一个步骤,只有先放到暂存区才能后续提交到本地,同时有更改和暂存的时候进行提交会只提交已有的暂存。
它的意义在于实现了分批次提交,也就是我们因为某些原因更改了10个文件,但现在只想提交5个文件,这时候把这5个文件放入暂存区就是了,然后提交。
提取和拉取
fetch 只能更新远程仓库的代码为最新的,本地仓库的代码还未被更新,我们需要通过 git merge origin/master 来合并这两个版本,你可以把它理解为合并分支一样的。
pull 操作是将本地仓库和远程仓库(本地的)更新到远程的最新版本。
如果想要更加可控一点的话推荐使用fetch + merge。
还原-重置-挑拣
(以下为引用)
常见问题与应对操作
1,VS中如何处理代码冲突
(1)出现代码冲突的场景
1两人先后往同一个分支发出合并请求
2多个分支的代码合并到一个分支
3一人在同一个工作区签出分支,但前一个分支有更改未提交
(2)分别对应的解决办法
3产生冲突Vs会出现提示,点击冲突文件,选择保留合并即可
或者签出分支之前先将修改进行储藏,而不要暂存
2,VS中如何进行版本回退
(分别在更改和同步中)查看历史记录,点击右键选择还原,会还原到所点击节点的上一次提交
(分别在更改和同步中)查看历史记录,显示所有已提交更新,然后选中要恢复的版本,点击右键选择“挑拣”,VS会将当期版本作为待传出提交,提交至远程即可。
3,Vs中的分支管理(新建,合并,删除)
1,如何从任意一个提交上签出分支
查看历史记录-》签出分支
2,BUG分支与feature分支
就是用完就删除,分别用于debug和添加新功能测试
3,合并分支
这个地方常常出现提交冲突,原因一可能是远程库与本地库不一致导致的,先把远程库最新的提交拉取下来,不用怕拉下来会覆盖你修改的代码,如果你已经进行了本地的提交。原因二是下图这个情况,在本地仓库新分支签出和合并这两个时间段如果master是状态不变的则不会出现冲突,下图情况master变化了就是要手动合并了选择保留部分
4,版本管理方式
主要有俩,一通过新建分支,一个分支存一个版本,二通过打标签,通过标签号记录版本号
5,强制提交与覆盖
VS中好像没有强制提交和强制覆盖的方式,只能把远程拉取下来处理合并再重新推上去,用小乌龟和命令行可以强制推送,本地代码覆盖掉远程仓库
git push origin branch-name --force
远程仓库覆盖本地仓库
git fetch --all && git reset --hard origin/master && git pull
6,当本地仓库和远程仓库不同时,提交时提交发生冲突
发布到远程存储库时遇到错误: rejected Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes before pushing again.
解决方案:
1,先拉取下来远程库,vs会提示你代码冲突,然后选择本地与远程代码进行保留,再进行一次本地提交,最后推送成功
2,注意如果要合并分支应该在拉取远程之后再合并
参考资料:
https://blog.csdn.net/qq_36383623/article/details/103090793
https://blog.gitee.com/2020/06/17/code-conflict/
https://blog.gitee.com/2019/04/25/gitee-branch/
https://www.cnblogs.com/zhaokunbokeyuan256/p/9597038.html
https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
https://blog.csdn.net/hhhhhhenrik/article/details/79482560
VS中git概念解析与深度使用的更多相关文章
- Android中px, ppi, dpi, dp, dip, sp概念解析
Android中px, ppi, dpi, dp, dip, sp概念解析
- Git-【技术干货】工作中Git的使用实践
Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Hadoop中的InputFormat解析
1.InputFormat InputFormat是Hadoop平台上Mapreduce输入的规范,仅有两个抽象方法. List<InputSplit> getSplits(), 获取由输 ...
- mongodb基本概念解析
MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...
- Git全解析之用起来先
文章目录 1. Git全解析之用起来先 1.1. 先安装Git环境 1.2. 配置 1.3. 简单了解Git 1.3.1. Git对象模型 SHA 1.3.2. Git目录与工作目录 1.4. 可以开 ...
- Git全解析之远程仓库交互
文章目录 1. Git全解析之远程仓库交互 1.1. 中央仓库的概念 1.2. 本地分支与远程分支 1.3. pull与fetch 1.4. 关于捐赠 Git全解析之远程仓库交互 中央仓库的概念 虽然 ...
- Linux中git的使用
之前在windows中一直采用github的桌面版,库的建立更新都是借助软件的帮助.所使用的的功能也非常局限,仅仅只是创建库再提交自己的代码.至于版本管理.回滚.分支以及git的结构都没有清楚的认识. ...
- Git 概念
Git 概念 一.Git 工作流程 ~ Workspace:工作区 ~ Index/ Stage:暂存区 ~ Repository:仓库区(或本地仓库) ~ Remote:远程仓库 工作区 进行开发改 ...
- git概念及工作流程详解
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
随机推荐
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- DolphinScheduler 功能开发:⼯作流级别任务空跑(后端),测试工作流是否正确执行...
点击上方 蓝字关注我们 ✎ 编 者 按 在今年由中国科学院软件研究所主办的开源软件所供应链点亮计划-开源之夏活动中,有不少小伙伴提交了关于 DolphinScheduler 的项目,本期是来自成都信息 ...
- 我用Axure制作了一款火影小游戏 | PM老猫
Axure不仅仅是一个原型工具,除了原型之外还可以用来制作一些静态网页,这点对于不懂代码或前端的同学来说挺实用.之前整理了一版<Axure函数自查表>,因为感觉内容太多又对前端样式及脚本感 ...
- 【AGC】如何快速部署Serverless Url缩短模板
使用场景 Serverless短URL生成模板实现您将在云数据库服务中URL缩短的诉求.使用此模板后,仅需在云数据库服务侧配置长URL值.Serverless短URL生成模板会在后台与Bitly AP ...
- 2020牛客NOIP赛前集训营-提高组(第三场) C - 牛半仙的妹子Tree (树链剖分)
昨天教练问我:你用树剖做这道题,怎么全部清空状态呢? 我:???不是懒标记就完了??? 教练:树剖不是要建很多棵线段树吗,不止log个,你要一个一个清? 我:为什么要建很多棵线段树? ...
- 学习ASP.NET Core Blazor编程系列一——综述
一.NET 6概述 .NET 6 是微软统一.Net Core与.Net Framework 两大框架的第二个版本,微软在 .NET 5 中开始进行这两大框架的统一之路. .NET 6 将作为长期支持 ...
- 第五十三篇:Vue安装Element ui
好家伙,之前写的一篇过时了,用不了了,更新一波 (已新建一个vue项目) 1. 在项目目录下执行:npm i element-ui -S 2. 在main.js中写入 import ElementUI ...
- 第四篇:理解vue代码
解释以下代码: 实现输入框中能够打字的功能 <el-input v-model="input" placeholder="在这打字"></el ...
- ESP8266 NONOS SDK学习
一.概况 1.存储 ESP8266 带有 160 KB 的 RAM,其中 64 KB 为 iRAM,96 KB 为 dRAM.iRAM 进一步 分成两块:32 KB iRAM 块运行标有 IRAM_A ...
- KingbaseES R6 集群主机锁冲突导致的主备切换案例
案例说明: 主库在业务高峰期间,客户执行建表等DDL操作,主库产生"AccessExclusiveLock "锁,导致大量的事务产生锁冲突,大量的会话堆积,客户端session ...