• VS中Git的简单使用与说明


    现在的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~
  • 相关阅读:
    如何在一台服务器同一个端口运行多个pgbouncer
    可以识别到U盘,无法挂载,dev/目录下只有sda,没有sda1问题
    关于华为设备vlan接口的总结
    万字带你走过数据库的这激荡的三年
    校验算法总结
    【JAVA】链表面试题
    国家域名后缀有哪些?
    设计模式——访问者模式
    Ant Design of React组件引用及路由跳转
    vivo 容器集群监控系统优化之道
  • 原文地址:https://blog.csdn.net/Raink_LH/article/details/127792672