8、VS中Git使用

VS中Git使用

  • 1.基础操作
    • 1.1 VS配置Git
    • 1.2 操作界面
  • 2.本地库版本管理
    • 2.1 创建管理本地库
    • 2.2 暂存、存储
    • 2.3 提交
    • 2.4 版本切换
  • 3.分支操作
    • 3.1 分支应用
    • 3.2 新建分支
    • 3.3 合并分支、解决冲突
    • 3.4 删除分支
  • 4.远程库版本管理
    • 4.1 新建、克隆
    • 4.2 提取、拉取、推送与同步
    • 4.3 团队开发

最新VS默认提供了对Git的支持。
Git 是使用极广泛的新式版本控制系统。 使用 Git,可以跟踪一段时间内对代码所做的更改,并且可以还原到特定版本。
GitHub作为远程库,可用于团队内协作和团队外协作。

1.基础操作

1.1 VS配置Git

选择 VS2019 顶部的菜单项(工具 —> 选项),在弹出的对话框中,从左侧选择 ”源代码管理“,从右侧的下拉框中选择 Git.
在这里插入图片描述
然后发现左侧多出来了一些跟 Git 配置有关的选项,从左侧选择 “Git 全局配置” 这个选项,在右侧填写用户名和邮箱,这里可以随便填写,这个主要是用来在版本历史记录中识别用户身份(识别是哪个用户提交的版本)。
在这里插入图片描述
然后点击确定,保存配置成功后,就会发现在 VS顶部菜单上,多出来了一个 Git 菜单,这说明 VS集成 Git 配置成功。
在这里插入图片描述

1.2 操作界面

菜单栏中设有Git栏,可以进行基础设置和操作。
视图:
git更改:当工作区文件发生变化时,显示变换内容以及提交。也可以用于处理 拉取、暂存、提交、推送、合并等操作。
git存储库:当前版本和分支的变换历史记录,以视图的形式呈现。
在这里插入图片描述
主界面右下角显示未推送的提交、挂起的更改、当前操作的文件以及当前操作的分支。
在这里插入图片描述

2.本地库版本管理

2.1 创建管理本地库

  1. 创建配置新项目并利用Git管理
    先使用 VS 创建一个控制台项目,设定项目存储路径。由于只创建一个简单的演示项目,为了查看方便,所以我将解决方案和项目放在同一个目录中了。在实际工作中的绝大部分场景中,我们都会在一个解决方案下创建多个项目,所以在实际工作中,不要勾选 “将解决方案和项目放在同一个目录中”。
    在这里插入图片描述
    选择解决方案,通过鼠标右键菜单,选择 “创建 Git 存储库”。
    在这里插入图片描述
    在弹出的对话框中,左侧选择 “仅限本地”,右侧的本地路径,默认就是项目所在的文件夹,然后点击 “创建” 即可。
    在这里插入图片描述
    项目所在目录中的文件,有了被托管的绿色图标,在 VS的解决方案下,文件前面也有了 “小锁” 的标志,这说明项目的代码已经被 Git 进行版本管理,工作目录已经创建成功。
    在这里插入图片描述
    当文件发生变化时,文件前面小锁变为对号。
    在这里插入图片描述
    当添加新文件后,文件前将显示加号。
    在这里插入图片描述

2.2 暂存、存储

在VS中,暂存是指“git add”,存储是指“git stash”。
改动文件点击“+”后,会归到【暂存更改】的节点下。然后才能提交和推送。
在有文件改动后,点击提交按钮右边的箭头,在下拉菜单中能看到【全部存储(T)(–include-untracked)】和【全部存储并保持暂存(S)(–保留索引)】
在这里插入图片描述
简单的说,就是将当前更改保存起来,或者理解为打包藏起来。并没有提交

【全部存储(T)(–include-untracked)】:就是字面意思,全部存储,傻瓜式,管你是暂存还是更改。后面括号中的(–include-untracked),就是包含非追踪文件,就是即使“.gitignore”中已经忽略的文件发生更改,也存。存储结果就是你的【更改数】【暂存更改】节点下所有东西都被保存且不在显示。

【全部存储并保持暂存(S)(–保留索引)】:类似与全部存储,但“并保持暂存”是说,之前点过“+”,在【暂存更改】下的虽然会被存储,但不会被清理。方便你的下一步提交操作。所谓“–保留索引”是什么意思呢,索引就是当“git add”(点“+”)之后,这些更改就会生成版本号,或者叫索引,由一串字符表示。

存储后如何应用呢?
在【Git更改】窗口中的【存储】节点下,右击某一条存储,弹出的菜单中,【应用】就对应前面提到的“git stash apply”;【弹出】 就对应前面提到的“git stash pop”;【放下】就是丢弃删除某个存储的意思。

应用场景:
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

git stash //能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
git stash save //作用等同于git stash,区别是可以加一些注释  git stash save "test"
git stash list //查看当前stash中的内容
git stash pop //将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
git stash apply + stash名字 //将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
git stash drop + 名称  //从堆栈中移除某个指定的stash
git stash clear //清除堆栈中的所有 内容
git stash show //查看堆栈中最新保存的stash和当前目录的差异。
git stash branch  //从最新的stash创建分支。

2.3 提交

将文件的改动提交都本地库中进行管理。

git commit -m "" 文件名

在这里插入图片描述

2.4 版本切换

在需要更改版本的上右击,点击“查看历史版本”
在这里插入图片描述
在这里插入图片描述

  • git reset soft、mixed和hard的区别

soft (软),仅仅移动版本库HEAD指针,其他什么事都不做,即索引文件(暂存区)、工作区不会重置
在这里插入图片描述

mixed(混合)reset默认的,不指定reset类型就是它,移动版本库HEAD指针,重置暂存区,但不重置工作区。就比如说你从当前版本回退到历史版本,你工作区更改的文件和代码都是不会变成历史版本的。
在这里插入图片描述

hard(硬),移动版本库HEAD指针,重置暂存区和工作区。彻底回退到某个版本,本地的代码也会变为某个版本的内容,此命令慎用! 如果真要使用,建议先commit提交一份到本地库里,后悔再git reset回去
在这里插入图片描述

  • VS中对第二个历史版本commit进行重置>删除更改处理,会删除第一个commit版本。但是通过git bash命令窗可以恢复。
  • 对于第二个版本利用保留更改,然后撤销更改即可恢复到当前选定的事先版本。该功能也能实现跨版本的功能修改。
    在这里插入图片描述

3.分支操作

3.1 分支应用

在实际项目开发过程中,我们会经常遇到这样的情景:master 主分支的代码已经测试通过,编译发布到公网正式环境了,接下来我们需要开发新的需求功能,此时我们是在 master 主分支上继续开发新需求功能,还是新创建一个分支开发新需求功能?
这主要根据你所要开发的新需求功能的 任务量大小 和 复杂程度 而定。
大部分情况下,我们实际工作中开发的新需求功能,工作量都会比较大,复杂程度也较高,需要花费时间也较长,此时最好创建一个新分支来开发新需求功能,最好让 master 分支的代码版本始终保持跟发布到公网正式环境的版本一致,这样做的好处很多。万一新功能在开发过程中,运营人员反馈了公网环境中的一些 bug,万一产品经理或者领导要求临时调整一下公网上的一些界面或功能等等,此时通过修改 master 主分支的代码,我们就可以快速响应并及时发布。等新的功能需求开发完毕测试无误,发布到公网正式环境后,我们就可以考虑合并分支,或者直接把新的分支作为主分支。

3.2 新建分支

在 VS 的顶部菜单中,选择 "Git —> 新建分支 ".
在这里插入图片描述
弹出如下对话框,录入新分支的名称 dev ,勾选上 “签出分支” 对话框,点击 “创建” 即可。
在这里插入图片描述

3.3 合并分支、解决冲突

分别在master和hot_fix分支中修改部分内容,然后合并分支。合并的过程中会产生冲突,通过自主修改或者自带的git解决冲突。
在这里插入图片描述
合并完成后,由于我们在 master 分支和hot_fix分支上,同时更改了文件,所以 文件就有合并冲突,文件前面的图标也发生了变化,打开 Program.cs 文件可以看到冲突的细节.
在这里插入图片描述
此时我们有两种途径来解决冲突:

  1. 直接修改文件,编译没有问题后,提交即可。
  2. 鼠标选择文件,点击鼠标右键菜单 “Git --> 解决”。

我们将 文件修改完成后,编译运行测试没有问题后,点击 “接受合并” 即可,然后将合并后的 文件提交到 master 版本库. 打开合并编辑器
在这里插入图片描述
可以在文件中修改后,调试查看结果。如果满足要求则“接受合并”。

3.4 删除分支

此时 分支就没有什么用处了,我们可以把 分支进行删除,在 VS顶部菜单中,选择 “Git --> 管理分支”,打开如下界面,选择 分支,通过鼠标右键菜单选择 “删除” 即可。
在这里插入图片描述

4.远程库版本管理

4.1 新建、克隆

从新建远程代码仓库,到克隆、拉取、推送、管理分支,基本都能通过VS完成。
在这里插入图片描述
克隆完成后,同时完成了:1、拉取代码;2、初始化本地库;3、创建别名。
通过行命令clone也可以,然后采用VS打开本地库进行操作,也能进行正常的远程库管理。

4.2 提取、拉取、推送与同步

在这里插入图片描述
在这里插入图片描述
在菜单栏和git更改视图中都可以操作。

  • 提取(fetch):从远程获取最新版本文件到本地,不自动合并,最新版本在“分支”选项中的“remotes/origin”文件夹下可以查看,可以选择将其合并到master分支上。
  • 拉取(pull)从远程仓库拉取最新版本文件到本地,自动合并/merge。
  • 推送(push)即将本地仓库上传至云端.
  • 同步包括拉取和推送两个步骤.

提取不会自动合并或覆盖本地代码,而是将其储存在分支选项卡中,供开发者自行选择合并,可以避免云端与本地一些代码起冲突时的数据丢失。而拉取则是暴力合并,如果该项目仅由你一人进行开发,那么用拉取更方便,因为没有其他人的改动,但如果是和团队一起协作开发则建议用提取,避免引起不必要的冲突。
同样地,如果是一人开发项目,或者仅仅是想同步本地代码到云端,那推送就足够了。但如果是团队协作开发,那么强烈建议使用同步,即先拉取再推送,不然可能会出现如下情况的提示,即项目中其他部分未和最新的云端仓库保持一致。

4.3 团队开发

  • 创建新的分支进行开发
    这是一个常见的开发实践,每个开发者都在自己的分支上进行工作,而不是直接在主分支上开发。这样可以防止不同开发者的改动直接冲突。
  • 定期拉取和推送代码
    开发者需要定期从远程仓库拉取最新的代码,并将自己的代码推送到远程仓库。这样可以确保开发者始终基于最新的代码进行开发,减少冲突的可能性。

当你从远程仓库拉取最新代码并在其基础上进行开发时,其他开发者可能也在同时进行他们的开发工作。当你准备提交(push)你的代码时,的确可能会发生版本冲突。这是因为在你的开发过程中,源代码已经被其他开发者更新了。
这就是为什么定期拉取(pull)和推送(push)代码是很重要的。定期拉取最新的代码可以帮助你尽早发现和解决冲突,减少最后阶段的复杂性。如果你只在开发完成时才拉取最新代码,那么可能会遇到很多冲突,需要花费大量时间来解决。
当你准备提交你的代码时,你应该首先从远程仓库拉取最新的代码,然后合并(merge)到你的开发分支。这时,你可能会发现一些冲突。这些冲突需要你手动解决,Git提供了工具来帮助你标识和解决这些冲突。一旦冲突解决,你就可以将你的代码推送到远程仓库。
详细操作步骤如下:

  1. 切换到主分支。
  2. 从远程仓库拉取最新的代码。
  3. 切换回开发分支。
  4. 将主分支的新提交合并到你的分支。
  5. 解决完所有冲突后,你需要添加所有解决了冲突的文件,提交这次冲突解决。
  6. 将你的分支推送到远程仓库。

这样,你的分支就包含了所有在你开发过程中主分支上的新提交,同时也包含了你自己的更改。

note:如果发生了拉取的冲突。则将软件版本回溯到之前有联系的版本,与远程库建立联系之后,然后将新的更改再合并到分支中去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327400.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sublime text 3 分屏和关闭分屏

有时候需要编辑多个地方的代码,开多个编辑器又太麻烦,那么Sublime自带的分屏快捷键可以解决烦恼。 Altshift2 分为2列 Altshift3 分为3列 Altshift4 分为4列 Altshift5 分为2行2列 Altshift8 分为2行 Altshift9 分为3行 取消分屏:Alts…

【JAVA】OPENGL+TIFF格式图片,不同阈值旋转效果

有些科学研究领域会用到一些TIFF格式图片,由于是多张图片相互渐变,看起来比较有意思: import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.*;/*** 可以自已定义日志打印格式…

Python课程设计基于python的人脸识别佩戴口罩系统设计

wx供重浩:创享日记 对话框发送:python口罩 获取完整论文报告源码源文件 1 研究背景与意义 新型冠状病毒展现出全球化流行和蔓延的趋势,这提醒我们:传染病防治在今后相当长时间内仍是疾病预测控制工作的重点。戴口罩是预防呼吸道…

网络实训模拟考察题目和答案(华为eNSP综合实验考试)

拓扑中四个交换机五个路由器,共九个设备 答案是对应的九个脚本(从设备命名到保存) 全部复制粘贴后,从PC1、PC2都是能Ping通服务器的(保及格),其他要求没检查 题目 VLAN信息 设备名称端口链路…

ssm基于JSP的明水县苹果网吧计费管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本明水县苹果网吧计费管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大…

回顾2023编程之旅

一、前言 看在给了我一个博客专家的份上就继续写写博客,实事求是的讲如果是工作之余去总结csdn写写技术博客,还想混个专家什么的,真的是精力不够。因为里面的灌水的实在太多,比不过的,写这个玩意必须得淡泊名利才能悠然…

ROS-[ERROR] [1704543158.960463911]: length [stent_height] is not a valid float

出现如图所示报错 原因:未能正确调用,忘记加${}了

我建立了一个资源分享群

我建立了一个资源分享群 在为寻找资源犯愁? 在为分享资源犯愁? 一起加入分享资源群(是wx群哦)吧!你可以分享自己的资源帮助他人。你可以在群组里需求资源获取别人的帮助。发广告请绕行,会被拉黑哦 微信…

<HarmonyOS主题课>1~3课后习题汇总

<HarmonyOS第一课>1~10课后习题汇总 1使用DevEco Studio高效开发 单选题 用哪一种装饰器修饰的组件可作为页面入口组件?(B) A. ComponentB. EntryC. PreviewD. Builder ArkTS Stage模型支持API Version 9&#xf…

网络请求 - 异步编程详解

一、概述 网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个数据请求。WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。Socket连接:通过Socket进行数据传输。 HTTP和WebSocket都是啥? 比如我…

MongoDB索引详解

概述 索引是一种用来快速查询数据的数据结构。BTree 就是一种常用的数据库索引数据结构,MongoDB 采用 BTree 做索引,索引创建 colletions 上。MongoDB 不使用索引的查询,先扫描所有的文档,再匹配符合条件的文档。使用索引的查询&…

web期末作业数字时钟,实时更新,音乐播放

文章目录 月球动态引导页加载引导页主页面主页面html需要完整代码私信我 月球动态引导页 加载引导页 主页面 主页面html <!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1&…