vs中git概念解析与深度使用

nnsy nnsy     2022-11-30     645

关键词:

参考资料:

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

 

基础概念

四个区

  • 工作区(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:还原
还原针对的是某一次提交的所有commit,做了反向操作,新生成一个commit覆盖了这个操作。就和在同步界面Revert某个提交一样。
2:挑拣
还原本地2的提交后,对本地2的提交进行挑拣操作,发现代码又出现了。
结论:挑拣是针对两次commit之间不同代码的比对,后进行合并不同的代码。且针对的也是某一次提交。(和解决代码冲突的操作差不多)
3:重置--hard
假设目前有三次提交A-B-C,对A进行“重置--hard”后发现本地1的代码回到了A。参考https://www.cnblogs.com/kidsitcn/p/4513297.html
结论重置--hard 将我们的head、index、工作区代码全部回滚到A。
但是需要注意的origin中的内容并不会修改,本地如果现在直接“同步”操作后,做的重置--hard操作又没用了。
4:重置--mixed
假设目前后三次提交A-B-C,对于A进行“重置--mixed”后发现本地代码没变,
但是head、index发生了更变,本地代码没变!自己可以修改本地代码后再次提交,但是对比的head、index不同了。
以下是另外一个博主给出的解释:
所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更将作为local modifications保存在working area中,(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit。
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

常见问题与应对操作

1,VS中如何处理代码冲突

(1)出现代码冲突的场景

    1两人先后往同一个分支发出合并请求

    2多个分支的代码合并到一个分支

    3一人在同一个工作区签出分支,但前一个分支有更改未提交

(2)分别对应的解决办法

    1,2网页端有如同第三点Vs的提示,手动选择保留那种冲突文件即可

    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

 

还差实地的两台电脑测试一下

 

vs2015与git的简单使用

前言在白忙之中抽了点时间,记录了下VS与Git的简单使用。在之前使用命令行的时候,提交或拉取代码时,总报错:(提取时遇到错误:UnsupportedURLprotocol),后来在网上查了些资料,最终也没找到个解决办法。开始,同事还说是VS... 查看详情

终端 Git 跟踪与 VS Code git 跟踪不同步

...题描述】:当我从终端添加、修改或删除文件时(我正在使用iTerm2-ohmyzsh-git扩展)暂存它们并提交它们,它不会反映在我的VS代码git跟踪中。我在VS代码中的源代码控制部分仍然说更改不是使用git暂存或跟踪的。而且我 查看详情

[深度概念]·softmax优缺点解析

[深度概念]·Softmax优缺点解析个人主页--> https://xiaosongshine.github.io/ Softmax是soft(软化)的max。在CNN的分类问题中,我们的groundtruth是one-hot形式,下面以四分类为例,理想输出应该是(1,0,0&# 查看详情

vs2013中使用git建立源代码管理

...//blog.csdn.net/bodybo/article/details/38976549/ 第一次在VS2013中使用Git,也是第一次使用git,各种不熟悉。百度各种使用经验,大都不屑于使用VS2013集成的Git,建议下载这个下载那个,我也照学了,确实能实现项目的提交、同步、合并... 查看详情

使用空间深度来解析配置文件与perl的上下文(代码片段)

我一直在尝试创建一个配置文件解析器来解析CiscoIOS配置等。最终目标是基于配置文件中的过滤器在上下文中显示相关数据。例如,使用这样的配置文件,它将显示我们发现“accessvlan”行作为“interface”上下文的子节点的所有接... 查看详情

简单读懂人工智能:机器学习与深度学习是什么关系

引言:随着AlphaGo战胜李世石,人工智能和深度学习这些概念已经成为一个非常火的话题。人工智能、机器学习与深度学习这几个关键词时常出现在媒体新闻中,并错误地被认为是等同的概念。本文将介绍人工智能、机器学习以... 查看详情

简单读懂人工智能:机器学习与深度学习是什么关系

引言:随着AlphaGo战胜李世石,人工智能和深度学习这些概念已经成为一个非常火的话题。人工智能、机器学习与深度学习这几个关键词时常出现在媒体新闻中,并错误地被认为是等同的概念。本文将介绍人工智能、机器学习以... 查看详情

简单读懂人工智能:机器学习与深度学习是什么关系

引言:随着AlphaGo战胜李世石,人工智能和深度学习这些概念已经成为一个非常火的话题。人工智能、机器学习与深度学习这几个关键词时常出现在媒体新闻中,并错误地被认为是等同的概念。本文将介绍人工智能、机器学习以... 查看详情

redisstream流的深度解析与实现高级消息队列一万字(代码片段)

...费消息4.2.1非阻塞使用4.2.2阻塞的使用4.3消费者组4.3.1基本概念4.3.2创建消费者组4.3.3从消费者组消费5永久故障恢复5.1XPEND 查看详情

vs.net2013中使用git建立源代码管理版本管理

第一次在VS2013中使用Git,也是第一次使用Git,各种不熟悉。百度各种使用经验,大都不屑于使用VS2013集成的Git,建议下载这个下载那个,我也照学了,确实能实现项目的提交、同步、合并的工作,但都不能与VS2013实现无缝配合,... 查看详情

深度学习vs机器学习vs模式识别

...学习数据科学家摘要:本文我们来关注下三个非常相关的概念(深度学习、机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系,让你更好的 查看详情

visualstudio2013与git

VS中的团队资源管理器中提供了使用Git的接口,这方便了我们使用Git来管理VS项目。这里以VS2013和代码托管平台码云(考虑网速和中文界面)为例,说明如何创建,clone,commit,push一个项目。一、在Windows上安装Git工具  略二、... 查看详情

深度解析线程工作原理

  1,线程的概念     一个程序中的方法有几条执行路径,就有几个线程  2,线程的创建     两种方式:       1,继承Thread         classTestThreadextendsThread{......}       2,实现Runnable接口,然后作... 查看详情

cjson的使用教程(树外构建outoftreebuild概念)(组包概念)(代码片段)

JSON基础:包括组包的概念等Github:DaveGamble/cJSONhttps://github.com/DaveGamble/cJSON文章目录Github:DaveGamble/cJSONLicenseUsageWelcometocJSON.Buildingcopyingthesource复制源CMakeMakefileVcpkgIncludingcJSONDataStructureWorkingwiththedatastructure使用数据结构B... 查看详情

vs2015使用oschina的git功能

好长时间没有写博了,把今天的新的记录一下。最近开始使用vs2015,vs2015支持git平台和TF功能,因为....,我选择了OSChina的git。一开始学习的此篇文章http://my.oschina.net/gal/blog/141442,貌似不行。后来自己在vs2015的“扩展与更新”功... 查看详情

《angularjs深度剖析与最佳实践》笔记:第二章概念介绍

第二章概念介绍2.1什么是UI?用户界面包括内容(静态信息+动态信息),外观,交互.在前端技术栈中分别由HTML,CSS和JS负责.进一步抽象,分别对应于MVC三个主要部分:Model,View和Controller对应到AngularJS中, 内容:静态内容---模板动态内容---s... 查看详情

基本概念深度神经网络压缩与优化研究_王征韬

深度神经网络压缩与优化研究文献来源:王征韬.深度神经网络压缩与优化研究[D].电子科技大学,2017.摘要:深度学习是近年来机器学习领域最有影响力的研究方向,在计算机视觉、自然语言处理的许多问题上都取得了突出的效果。... 查看详情

在云计算时代中,深度解析桌面云adesk

...业术语,也常常把人绕得云里雾里。但事实上,桌面云的概念并非那么复杂,中亚硅谷桌面云产品aDesk,就阐述了桌面云产品的“简化”概念。企业信息化建设过程中,到目前为止国内客户几乎还是采用传统PC的办公模式,越来... 查看详情