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的区别 ...
随机推荐
- 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load
package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...
- Odoo 如何下载指定版本源码 && .cfg配置参数
# 我们使用应用市场上的模块的时候,经常会碰到模块只兼容特定版本,要将模块兼容到自己版本来的时候,就需要下载它原兼容odoo的版本运行. # 这里的-b后面加的11.0就是它的版本.在git中也就是分 ...
- ansible一键安装GreatSQL并构建MGR集群
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 利用ansible一键安装GreatSQL并完成MGR部署. 本次介绍如何利用ansible一键安装GreatSQL并完成 ...
- 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗
『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗 每周学点MGR知识. 1. 三节点的MGR集群,有两个节点宕机后还能正常工作吗 要看具体是哪种情况. 如果两个节点是正常关闭的话,则 ...
- STC8H开发(十五): GPIO驱动Ci24R1无线模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- 【沥血整理】灰度(二值)图像重构算法及其应用(morphological reconstruction)。
不记得是怎么接触并最终研究这个课题的了,认识我的人都知道我是没有固定的研究对象的,一切看运气和当时的兴趣.本来研究完了就放在那里了,一直比较懒的去做总结,但是想一想似乎在网络上就没有看到关于这个方面的 ...
- Linux 域名和DNS
名字解析的作用: TCP/IP网络中,设备之间的通信依赖IP地址来实现,但是IP地址不好记忆,所以就将每一台设备用一个名字来进行标识,但是这个名字计算机不能解析.所以就需要借助名字解析服务来实现将名字 ...
- 自定义注解,利用AOP实现日志保存(数据库),代码全贴,复制就能用
前言 1,在一些特定的场景我们往往需要看一下接口的入参,特别是跨系统的接口调用(下发,推送),这个时候的接口入参就很重要,我们保存入参入库,如果出问题就可以马上定位是上游还是下游的问题(方便扯皮) 2 ...
- [CF1526F] Median Queries(交互 / 构造)
题面 这是一道交互题. 有一个未知的长度为 N \tt N N 的排列 P \tt P P,已知 P 1 < P 2 \tt P_1 < P_2 P1<P2 . 每次询问格式为 ...
- CSP-S 2020 T4 贪吃蛇 (双队列模拟)
题面 题解 先看数据,T<=10,用平衡树或优先队列是可以拿70分的,大体思路和正解思路是一样的,每次直接修改,然后模拟. 我们模拟的时候,主要是在过程中算出最终被吃的有选择权的蛇的最后选择时刻 ...