现在的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~
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐