现在的Visual Studio 2019、2020都自带Git插件,而且用起来也是非常好用的。
基本上的常用操作都已经涵盖在内了,能够满足日常开发所需。
自己用了一年时间,做些总结。
1、新建、克隆
新建项目、克隆项目个人还是习惯用原始的方式。
微软收购Github后,VS在git、GitHub上也做了很多优化。从新建远程代码仓库,到克隆、拉取、推送、管理分支,基本都能通过VS完成。
最基本的克隆等,建议直接参考微软官方文档
Visual Studio 中的 Git 体验 | Microsoft Learn
通过命令行克隆也可以,只要问价夹或者项目下有“.git”文件夹(隐藏文件夹),并有正常的git相关配置文件,VS都会识别到,git插件功能也能正常使用。
2、基础操作:拉取、提交、推送
2.1 功能在哪
VS顶部菜单中有【Git(G)】,里面是Git常用操作。
还有就是在【视图】菜单中打开【Git更改】和【Git存储库】
【Git更改】视图中主要用于处理 拉取、暂存、提交、推送、合并等操作。
【Git存储库】视图主要是查看以往提交、查看分支、操作分支等。
2.2 简单操作
【Git更改】窗口顶部的几个按钮,包括 提取、拉取、推送、同步...
提取:就是从远端仓库获取最新的代码,但是不应用,类似于“检查更新”
拉取:及“获取并应用更新”的意思。
推送:就是用本地更新云端仓库。
同步:就是先拉取,在推送。
当有文件修改后,【更改数】下面就会列出发生更改的文件。
文件名末尾会有“+”号。
点击“+”号,文件就会被收纳到【暂存更改】下。
点击“+”,就类似于通过命令行执行“git add”操作。
只有add了的修改才能被提交。
提交:
将要提交的文件点击“+”,编辑合适的提交信息,点击【提交临时数据/全部提交】按钮。即可提交。
提交只是在本地分支建立了版本号,可以理解为一种“本地存档”。
提交后VS会提示“已本地创建 提交 xxxx”
在【Git更改】能看到 传出和传入的个数
接下来就需要“推送”,点击【Git更改】d顶部的向上箭头按钮,即执行推送(push)。即向远程仓库同步。
3、暂存、存储
抛开“Visual Studio”不谈,暂存和存储说的是一回事,即“git stash ”。
但在VS中,可能是微软的蜜汁官翻的尴尬,不过也确实找不到合适的词语来描述。
在VS中,暂存是指“git add”,存储是指“git stash”。所以,就像前面提到的,改动文件点击“+”后,会归到【暂存更改】的节点下。然后才能提交和推送。
接着再来说说“存储”
在有文件改动后,点击提交按钮右边的箭头,在下拉菜单中能看到【全部存储(T)(--include-untracked)】和【全部存储并保持暂存(S)(--保留索引)】
要区分这两个选项到底什么意思,需要先了解下“git stash”。
git stash
可以参看下其他博客:
git stash详解
Git Stash命令的使用
简单的说,就是将当前更改保存起来,或者理解为打包藏起来。
git stash pop
git stash apply
上面两个都是将存储重新应用,不同的是“pop”是重新应用并丢弃存储。“apply”是重新应用的同时还保留存储。
VS中的存储:
【**全部存储(T)(--include-untracked)**】:就是字面意思,全部存储,无脑全存,傻瓜式,管你时暂存还是更改,文件时候ignore,是否track,全存。
后面括号中的(--include-untracked),就是包含非追踪文件,就是即使“.gitignore”中已经忽略的文件发生更改,也存。
存储结果就是你的【更改数】【暂存更改】节点下所有东西都被保存且不在显示。
【**全部存储并保持暂存(S)(--保留索引)**】:类似与全部存储,但“并保持暂存”是说,之前点过“+”,在【暂存更改】下的虽然会被存储,但不会被清理。方便你的下一步提交操作。所谓“--保留索引”是什么意思呢,索引就是当“git add”(点“+”)之后,这些更改就会生成版本号,或者叫索引,由一串字符表示。
存储后如何应用呢?
在【Git更改】窗口中的【存储】节点下,右击某一条存储,弹出的菜单中,【应用】就对应前面提到的“git stash apply”
【弹出】 就对应前面提到的“git stash pop”
【放下】就是丢弃删除某个存储的意思。
在【弹出】【应用】中的次级菜单中又有【应用/弹出并还原暂存】和【将所有项作为非暂存应用/弹出】结合前面存储时的“保留暂存”,应该很好区分,前置是吧原来是暂存的恢复为暂存,后者是一股脑全部撤销暂存都当多普通更改进行应用/弹出。
4、冲突及解决冲突
上面只是对一些基础操作的介绍,单人单终端开发基本不回有什么问题。但当多人协同开发,或者多设备开发时,就有可能发生冲突,即同一个文件在不同的本地上修改了。
什么时候会出现冲突?
应用/弹出一个暂存时,或者合并一个分支到另一个分支时。这些时候都可能出现冲突。
出现冲突的文件会出现在【未合并的更改】节点下。
双击每个未合并的文件项,就能进行处理冲突的合并了
右上角的设置可以调整视图,默认是上面这种上二下一的视图,上面的两个一边是“他们的”,一边是“我们的”(微软翻译一直可以的)
“我们的”就是本地的、当前分支现有的。
“他们的”就是从其他地方引入的,比如从存储中解除封印释放出来的。
两个版本的差异之处会被标记出来,行前会出现复选框,对比后勾选需要采用的一边,或者两边都需要采用,就都勾选。
底部的视图时合并后的结果,当所有的差异处都处理完毕后,可以点击左上角的【接受合并】即完成该冲突项的解决。
所以的冲突项解决后,即可继续合并或提交了。
4、分支的新建、删除、合并、变基
4.1 新建分支
新建分支一种是在github/gitlab上直接操作,创建好后再拉取新建的分支。
也可以在VS中完成。
在【Gir存储库】视图中,展开远端仓库分支列表,选择新分支的基础分支,即需要从那个分支创建新分支,
点击鼠标右键
在菜单中点击【新建本地分支位置】
接着,会弹出新建分支的对话框,需要输入新分支的名称。
其下方有两个复选框
【签出分支】:即现创建一个分支,并且自动切换到新创建的分支上。不勾选即不切换,还停留在原先的分支上。
【跟踪远程分支】:即指明新创建的分支是一个远程跟踪分支,何为“远程跟踪分支”,可以多百度一下,大概可以理解为这个分支允许直接操作远端仓库,和远端是实时同步的,提交就等同于推送。一般不勾选!
点击【创建】后即在本地创建了一个分支
切换到新创建的分支上(之前没有勾选“签出分支”的话就邮件选择“签出”)。
然后右键新创建的分支,选择【推送】,即将创建分支的动作同步推送到远端,远端仓库也会有相同的分支。
4.2 删除分支
删除分支很简单,前提是不能删除当前所处的分支,且需要先删除本地分支才能删除远端分支。
例如前面的步骤后,先切换到“master”分支,然后右键本地“dev”分支,就可以点击【删除】了,删除了本地的分支,就可以用相同方式删除远端分支。
4.3 合并分支
合并分支只能在本地分支上操作,然后推送到远端。
合并就是将一个分支上代码的修改合并到另一个分支上。
操作还是在【Gir存储库】视图中。逻辑是将其他分支合并到当前分支,选中要合并过来的分支,右键
4、其他:撤销、还原
有些操作可能还是需要通过指令来执行,在VS的终端里也可以执行git命令。
这里记录一些常用的:
- 查看本地分支列表:git branch
- 获取远端分支列表:git branch -r
- 更新远端分支列表:git remote update origin -p或者git remote prune origin
- 点击提交后想要撤回:git reset --soft HEAD~
版权归原作者 Raink_LH 所有, 如有侵权,请联系我们删除。