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的区别 ...
随机推荐
- SpringBoot定时任务 - 开箱即用分布式任务框架xxl-job
除了前文介绍的ElasticJob,xxl-job在很多中小公司有着应用(虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能相对完善性,这是中小 ...
- SQL注入 基础学习
SQL注入学习笔记 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有 ...
- 4.5省选模拟solution
\(4.5\)省选测试\(solution\) 题面可是我精心准备(咕咕咕)了一周写出来的,大家就当看故事吧(那里面的人物确实是存在的,\(E\)就是本人啦,也算是对一段经历的回忆吧,所以这套考试的题 ...
- POJ2201 Cartesian Tree (cartesian tree)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Luogu3855 [TJOI2008]Binary Land (BFS)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- 使用MindSpore计算旋转矩阵
技术背景 坐标变换.旋转矩阵,是在线性空间常用的操作,在分子动力学模拟领域有非常广泛的应用.比如在一个体系中切换坐标,或者对整体分子进行旋转平移等.如果直接使用Numpy,是很容易可以实现的,只要把相 ...
- C++ 炼气期之结构体
1. 前言 随着计算机向着不同领域的延伸,数据的概念已经不仅局限于数值型数据,计算机需要处理大量的非数值.且复杂的类型数据. 为了能抽象地描述这些非数值.复杂类型的数据,C++引入了复合数据类型的概念 ...
- hadoop 不在 sudoers 文件中,此事将被报告。
问题来源: 使用sudo命令,让hadoop用户使用root身份执行命令时报错: [hadoop@mydocker ~]$ sudo date [sudo] password for hadoop: ...
- 批量获取代理ip
获取站大爷免费代理ip,然后打印出来,也可以把他存放在其他容器中 # coding:utf-8 import requests, re requests.packages.urllib3.disabl ...
- 在hyper-v虚拟机中安装并配置linux
虽然都是自己写的,还是贴个原文链接吧,如果文章里的图片错乱了,可能就是我贴错了,去看原文吧. 多图警告 WSL2真香? WSL2相比于WSL1前者更类似于虚拟机,配合上Windoes Terminal ...