在VS代码中使用版本控制

Visual Studio Code集成了源代码控制,并包含了内置的Git支持。许多其他源代码控制提供程序可通过VS Code Marketplace上的扩展获得。

Git历史
2.9M

donjayamanne
查看git日志,文件历史记录,比较分支或c ...
 
Visual Studio Team S ...
902.5K

MS-VSTS
连接团队服务,包括Team Foundatio ......
 
56.1K

mrcrowl
集成的Mercurial源控件
 
Perforce for VS Code
51.7K

slevesque
Perforce与VS Code的SCM功能集成
 
 

提示:单击扩展磁贴以阅读市场中的说明和评论。

SCM提供商

VS Code支持同时处理多个源控制提供程序。例如,您可以在TFS本地工作区旁边打开多个Git存储库,并在项目中无缝地工作。源控制视图(^⇧G)的SOURCE CONTROL PROVIDERS列表显示检测到的提供者和存储库,您可以通过选择特定提供者来确定更改的显示范围。

如果要安装其他SCM提供程序,请在“ 源代码管理”视图的“ 更多(...)”下拉列表中的“ 安装其他SCM提供程序...”命令将显示可用的SCM提供程序扩展的列表。

Git支持

VS Code附带Git源代码管理管理器(SCM)扩展。大多数源代码控制UI和工作流程在其他SCM扩展中很常见,因此阅读Git支持将帮助您了解如何使用其他提供程序。

注意:如果您是Git的新手,git-scm网站是一个开始使用热门在线图书,入门视频备忘单的好地方。VS Code文档假设您已经熟悉Git。

注意: VS Code将利用您机器的Git安装,因此您需要在获得这些功能之前先安装Git。确保至少安装版本2.0.0

提示: VS Code可以与任何Git存储库一起使用。如果您还没有私有托管的Git提供程序,Visual Studio Team Services是一个很好的免费选项。点击这里注册

左侧的“源代码管理”图标将始终指示您当前在存储库中有多少更改的概述。单击它将显示当前存储库更改的详细信息:CHANGES,STAGED CHANGES和MERGE CHANGES。

单击每个项目将详细显示每个文件中的文本更改。请注意,对于非暂存更改,右侧的编辑器仍允许您编辑文件:随意使用它!

您还可以在VS代码的左下角找到存储库状态的指示器:当前分支,脏指示符以及当前分支的传入和传出提交的数量。您可以通过单击该状态指示器并从列表中选择Git引用来检出存储库中的任何分支。

提示:您可以在Git存储库的子目录中打开VS Code。VS Code的Git服务仍将照常工作,显示存储库中的所有更改,但是作用域目录之外的文件更改将使用工具提示进行着色,指示它们位于当前工作空间之外。

Git状态栏操作

当前检出的分支配置了上游分支时,状态栏中的分支指示符旁边有一个“ 同步更改”操作。Synchronize Changes将远程更改下拉到本地存储库,然后将本地提交推送到上游分支。

如果没有配置上游分支并且Git存储库设置了远程数据库,则启用“ 发布”操作。这将允许您将当前分支发布到远程。

承诺

可以通过文件中的上下文操作或通过拖放来完成暂存和取消暂存。

您可以在更改上方键入提交消息,然后按Ctrl + Enter(macOS:⌘+ Enter)提交它们。如果存在任何分阶段更改,则仅提交这些更改,否则将提交所有更改。

我们发现这是一个很棒的工作流程。例如,在上一个屏幕截图中,只有config.js文件将包含在提交中。连续提交操作将同时提交vinyl-zip.jstests.js在单独的提交中提交。

可以在Git视图顶部的菜单中找到更具体的提交操作...

克隆存储库

您可以使用命令选项板(⇧⌘P)中的Git:Clone命令克隆Git存储库。系统将要求您提供远程存储库的URL以及放置本地存储库的父目录。

分支和标签

您可以通过命令选项板(⇧⌘P)中的Git:Create Branch ...和Git:Checkout to ..命令直接在VS代码中创建和签出分支。

如果您运行Git:Checkout to ...,您将看到包含当前存储库中所有分支或标记的下拉列表。

该混帐:建立分公司...命令可以让你快速创建一个新的分支。只需提供新分支的名称,VS Code将创建分支并切换到它。

遥控器

鉴于您的存储库已连接到某个远程,并且已检出的分支具有指向该远程分支的上游链接,VS Code为您提供推送,拉取和同步该分支的有用操作(后者将运行pull命令,然后执行一个推命令)。您可以在...菜单中找到这些操作。

VS Code能够定期从您的遥控器获取更改。这使VS Code能够显示本地存储库在远程控制器前面或后面有多少更改。从VS Code 1.19开始,默认情况下禁用此功能,您可以使用该git.autofetch 设置启用它。

提示:您应该设置凭据帮助程序,以避免每次VS代码与Git远程控制器通信时都要求提供凭据。如果不这样做,您可能需要考虑通过git.autofetch 设置禁用自动提取以减少您获得的提示数量。

天沟指标

如果您打开一个Git存储库的文件夹并开始进行更改,VS Code将向装订线和概述标尺添加有用的注释。

  • 红色三角形表示已删除行的位置
  • 绿色条表示新添加的行
  • 蓝色条表示修改的行

合并冲突

VS Code识别合并冲突。突出显示差异,并且内联操作可以接受其中一个或两个更改。解决冲突后,暂存冲突文件,以便提交这些更改。

查看差异

我们的Git工具支持在VS Code中查看差异。

提示:首先右键单击资源管理器或OPEN EDITORS列表中的文件,然后选择Select for Compare,然后右键单击要比较的第二个文件,然后选择与'file_name_you_chose' 进行比较,可以区分任意两个文件。或者从键盘点击⇧⌘P并选择文件:比较活动文件...,您将看到最近的文件列表。

差异编辑器审阅窗格

差异编辑器中有一个审阅窗格,它以统一的补丁格式显示更改。您可以使用转到下一个差异(F7)和转到上一个差异(⇧F7)在更改之间导航。可以使用箭头键导航行,按Enter键将在Diff编辑器和所选行中跳回。

注意:此体验对屏幕阅读器用户特别有用。

Git输出窗口

您可以随时查看我们正在使用的Git命令。如果发生奇怪的事情或者你只是好奇,这会很有帮助。:)

要打开Git输出窗口,请运行View > Output并从下拉列表中选择Git。

初始化存储库

如果您的工作区不在Git源代码控制之下,则可以使用Initialize Repository命令轻松创建Git存储库。当VS Code未检测到现有Git存储库时,您将看到a 没有活动的源控制提供程序。源控件视图中的消息和初始化存储库命令将在标题栏上提供。您还可以从命令选项板(⇧⌘P)运行Git:Initialize Repository命令。

运行Initialize Repository将创建必要的Git存储库元数据文件,并将您的工作区文件显示为准备好上传的未跟踪更改。

VS Code作为Git编辑器

从命令行启动VS Code时,可以传递--wait参数以使启动命令等待,直到关闭新的VS Code实例。当您将VS Code配置为Git外部编辑器时,这可能很有用,因此Git将等到您关闭已启动的VS Code实例。

以下是执行此操作的步骤:

  1. 确保您可以从命令行运行code --help并获得帮助。

    • 如果您没有看到帮助,请按以下步骤操作:

      • macOS:选择Shell命令:在命令选项板的路径中安装“代码”命令。
      • Windows:确保在安装期间选择了“ 添加到PATH ”。
      • Linux:确保通过我们新的.deb或.rpm软件包安装了Code。
  2. 从命令行运行 git config --global core.editor "code --wait"

现在您可以运行git config --global -e并使用VS Code作为编辑器来配置Git。

VS Code作为Git diff工具

将以下内容添加到您的Git配置中以使用VS Code作为diff工具:

[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE

这利用了--diff您可以传递给VS Code 的选项来并排比较2个文件。

总而言之,以下是一些可以使用VS Code作为编辑器的示例:

  • git rebase HEAD~3 -i 使用VS Code进行交互式rebase
  • git commit 使用VS Code作为提交消息
  • git add -p然后是e用于交互式添加
  • git difftool <commit>^ <commit> 使用VS Code作为更改的差异编辑器

下一步

  • 简介视频 - Git版本控制 - 介绍VS Code Git支持概述的介绍性视频。
  • 基本编辑 - 了解强大的VS代码编辑器。
  • 代码导航 - 快速浏览源代码。
  • 调试 - 这是VS Code真正发挥作用的地方
  • 任务 - 使用Gulp,Grunt和Jake运行任务。显示错误和警告
  • SCM API - 如果要将另一个源代码管理提供程序集成到VS代码中,请参阅我们的SCM API。

常见问题

问:嘿,我初始化了我的回购,但...菜单中的操作都是灰色的。是什么赋予了?

答:要推送,拉动和同步,您需要设置Git原点。您可以从repo主机获取所需的URL。拥有该URL后,您需要通过运行几个命令行操作将其添加到Git设置。例如,对于Visual Studio Team Services:

> git remote add origin https://<AccountName>.visualstudio.com/DefaultCollection/_git/<RepoName>
> git push -u origin master

问:我的团队正在使用Team Foundation版本控制(TFVC)而不是Git。我该怎么办?

答:使用Visual Studio Team Services Extension,这将点亮TFVC支持。

问:为什么拉动,推动和同步动作永远不会完成?

这通常意味着在Git中没有配置凭据管理,并且由于某种原因您没有获得凭据提示。

您始终可以设置凭据帮助程序,以便从远程服务器提取和推送,而无需每次都有VS代码提示您的凭据。

问:如何使用需要多因素身份验证的Team Services帐户登录Git?

答:现在有Git凭证助手可以协助进行多因素身份验证。您可以从下载这些混帐凭证管理Mac和LinuxGit的凭据管理器为Windows

问:我的计算机上安装了GitHub Desktop,但VS Code忽略了它。

答: VS Code仅支持其Git集成的官方Git发行版

问:每当VS Code运行时,我都会继续获取Git身份验证对话框。

答: VS代码会自动从服务器获取更改,以便向您显示传入更改的摘要。Git身份验证对话框独立于VS Code本身,是您当前Git凭据帮助程序的一部分。

避免这些提示的一种方法是设置一个记住您的凭据的凭证帮助程序

另一个选项是通过更改以下设置来禁用自动提取功能:"git.autofetch": false

问:我可以在VS Code中使用SSH Git身份验证吗?

答:是的,虽然VS Code最容易使用没有密码短语的SSH密钥。如果您的SSH密钥带有密码,则需要从Git Bash提示符启动VS Code以继承其SSH环境。

在VS代码中使用版本控制的更多相关文章

  1. 测试思想-流程规范 SVN代码管理与版本控制

    SVN代码管理与版本控制 by:授客 QQ:1033553122   欢迎加入软件性能测试交流群(QQ群):7156436   目录 一. 二. 三. 四. 五. 六. 七. 一. 创建根目录 创建一 ...

  2. 十一、IntelliJ IDEA 中的版本控制介绍(上)

    咱们已经了解了很多关于 IntelliJ IDEA 的使用方法,至少可以独立的运用 IntelliJ IDEA 进行项目开发啦!但是一个人进行项目开发更趋向于理想化,更多的则是团队协同开发.这时,咱们 ...

  3. [转]将已有项目代码加入svn版本控制

    原文链接:https://blog.csdn.net/aaroun/article/details/79074178 将已有项目代码加入svn版本控制 - TortoiseSVN入门篇Windows下 ...

  4. SVN将项目代码加入svn版本控制

    将已有项目代码加入svn版本控制 - TortoiseSVN入门篇Windows下SVN实用教程(以TortoiseSVN作为客户端(client)) 翻译: Bravo Young Next: 版本 ...

  5. Python-Jenkins API使用 —— 在后端代码中操控Jenkins

    最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...

  6. 在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  7. “RazorEngine.Templating.TemplateCompilationException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理

    错误信息: "RazorEngine.Templating.TemplateCompilationException"类型的异常在 RazorEngine.NET4.0.dll 中 ...

  8. C#代码中实现两个表(DataTable)的关联查询(JOIN)

    之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便.近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横 ...

  9. 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处

    (转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...

随机推荐

  1. adb查看安卓设备系统Android版本

    adb shell getprop "ro.build.version" 结果中如下两项便是版本信息: [ro.build.version.release]: [4.4.4][ro ...

  2. shiroWeb项目-记住我(自动登陆实现)(十五)

    用户登陆选择“自动登陆”本次登陆成功会向cookie写身份信息,下次登陆从cookie中取出身份信息实现自动登陆. 用户身份实现java.io.Serializable接口便于反序列化 package ...

  3. 2017/05/08 java 基础 随笔

    1.null pointer exception 指针变量obj 没有指向任何空间 你调用它的方法和属性就会出错 2.基本数据类型值传递,不改变原值,调用后就会弹栈,局部变量随时消失 引用数据类型值传 ...

  4. V4L2学习记录【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637600.html V4L2学习记录 这个还没有分析完,先在这放着,防止电脑坏掉丢了,以后再完善 V4L ...

  5. Linux 获取设备树源文件(DTS)里描述的资源【转】

    转自:http://www.linuxidc.com/Linux/2013-07/86839.htm 转自:http://blog.sina.com.cn/s/blog_636a55070101mce ...

  6. A1pass大大对黑客学习的建议

    本文转自:http://bbs.hackav.com/thread-92-1-1.html 菜鸟不可怕,可怕的是你认为自己一辈子都是菜鸟.每个高手都是从菜鸟进化过来的,就算是现在黑客界的泰斗们当年也无 ...

  7. openstack 安全策略权限控制等api接口

    computer API:                创建安全组 /os-security-groups 创建安全组规则 /os-security-group-default-rules Netw ...

  8. PYTHON-字符编码&文件处理-练习

    # 把多个账号密码写入文件中# 编写登录功能,登录失败三次 程序退出. # 登录账号密码定义,用列表分割,for循环取值=====判断对错=====循环条件3次退出# with open(r'db.t ...

  9. 深入理解AsyncTask的工作原理

    一.为什么需要工作者线程 我们知道,Android应用的主线程(UI 线程)肩负着绘制用户界面和及时响应用户操作的重任,为了避免“用户点击按钮后没反应”这样的糟糕用户体验,我们就要确保主线程时刻保持着 ...

  10. Redhat5_linux 系统环境下 oracl11g的安装教程图解

    linux_oracl11g 安装步骤 操作系统的安装敬请参考此文:VM 安装 linux Enterprise_R5_U4_Server_I386_DVD教程图解 设置linux服务器的静态地址请参 ...