我们先理清Git和Github的区别,Git是个版本控制的工具,用来管理本地的代码工程,它可以记录代码内容的变更;而Github是一个代码托管平台,我们可以使用Git将本地代码上传到Github。

为什么要学Git,上面说到Git是一个版本控制工具,它可以记录代码内容的变更,方便我们对项目的管理,它主要有以下的用途:

  • 代码备份

    举一个简单的例子,写好一个程序后,想要再加一个新功能,添加这个新功能需要对很多个文件进行改动。但是添加完这个功能后发现,这个新功能是个坑,然后就会想着回退到上一个版本,这时候如果有备份还好,没有备份的话就得ctrl+z,甚至要按照自己的记忆恢复以前的版本

    如果使用Git就好办了,直接使用git切换下版本或者分支就可以了。

    当然先备份一下原始代码,然后在上面改,也是一个很简单且有效的方法,但是随着新功能的增加,程序所占用的内存越来越大,而且每个版本间的区别很难直观看出,这不利于我们对项目的管理

  • 多人协作

    假设要做一个项目,这个项目中有多个功能,大多数情况下,我们不可能一个功能一个功能地做,而是进行团队分工,多个功能同步进行,这时候如果没有使用Git进行版本控制,那么在将这些功能统合时将会出现很大的问题

  • 以后工作的需要

    目前很多公司都在用Git进行项目管理,学会Git对以后的工作还是很有好处的

本文将介绍Git的基本工作流程,以及这些流程对应的命令行指令,最后对VScode中内置的Git进行介绍和演示

Git安装

Git在Windows上和在Linux上的使用方式基本无差别,所以本文中的演示主要在Windows上进行

Windows

在这里可以下载最新版的Git,然后一路Next即可

Ubuntu

sudo apt-get install git

Git工作流程

基本工作流程图:

  • 工作区(Workspace):平时存放项目代码的地方
  • 暂存区(Index/Stage):用于临时存放改动信息
  • 本地仓库(Repository):存放所有提交的版本数据
  • 远程仓库(Remote):托管代码的服务器,比如我们经常用的Github就是个代码托管平台

git的基本工作流程如下:

  1. 在工作区中添加、修改文件
  2. 将工作区中需要进行版本管理的文件放入暂存区
  3. 将暂存区的文件提交到git本地仓库
  4. (optional)将本地仓库推送到远程仓库

为了方便以后的学习和工作,不建议直接使用GUI来操作Git,下面将针对上面的工作流程介绍一些常用的Git命令行指令,这些指令是比较简单的,敲熟练之后再上手GUI版本的Git就相当容易了

初始化

初始化git,有两种方式:

# 方式一:本地生成一个git
git init
# 方式二:从远端克隆一个仓库
git clone https://gitee.com/xxxxxx/xx.git

基本配置

# 配置用户名
git config --global user.name "name"
# 配置邮箱
git config --global user.email "name@mail.com"

删除远程仓库

git remote rm origin

添加远程仓库

git remote add origin https://gitee.com/xxxxxx/xx.git

推送至远程仓库

将已修改文件添加至暂存区

git add dir/filename # 添加指定文件
git add . # 添加所有已修改文件

将暂存区的改动提交到本地的版本库,使用git commit命令我们就会在本地版本库生成一个40位的哈希值,用于版本回退

git commit -m "message" # message就是本次提交的简要说明

本地上传,注意在推送前需要先从远程拉取

git push -u origin master # master可以更换为其他分支

从远程仓库拉取

更新本地:

git pull origin master # master可以更换为其他分支

分支管理

分支管理是版本控制中一个很重要的内容,在Git中主要有切换/创建分支(checkout)、合并分支(merge)两个指令

下面是部分分支操作的指令和图示,圆圈○表示一个提交(commit)记录,矩形表示分支,它指向一个提交记录,由这个记录可以遍历之前所有的提交记录

首先初始化了一个git,这个git中只有一个master分支,包含两个commit记录

现在我们创建一个新分支,命名为develop

git checkout -b develop # 表示创建并切换到develop分支

此时master分支和develop分支都指向C1这个提交记录。我们分别在这两个分支上进行修改并提交:

git commit
git checkout master # 切换到master分支
git commit

可以看到master分支和develop分支指向了不同的提交记录,接下来我们将develop分支合并到master分支中

git merge develop

执行上面的指令后,产生了一个新的提交记录C4,由C4我们可以遍历之前所有的提交记录,但是此时master分支和develop分支仍然指向不同的提交记录。继续切换到develop分支,将master分支合并到develop分支中:

git checkout develop
git merge master

打标签

使用Git可以给指定提交打上标签,用来突出显示这个提交,比如将提交标记为v1.0v2.0,等等

  • 列举标签

使用如下命令即可列出所有标签

git tag

当标签太多时,可以使用如下指令列出包含指定字符的标签

git tag -l "v1.*"
  • 创建标签

添加-a选项即可创建标签,如下:

git tag -a v1.0 -m "version 1.0"

如上命令即可为当前提交创建一个标签,标签名为v1.0-m选项后就是该标签的附注信息

  • 推送标签

只使用git push命令在默认情况下不会将标签推送到 远程仓库,在创建标签后需要执行如下命令将指定标签推送到远程仓库:

git push origin <tagname>

如果要推送多个新标签,可以使用git push--tags选项将所有标签推送到远程仓库:

git push origin --tags
  • 删除标签

使用git tag-d选项即可删掉本地仓库上的指定标签,如下:

git tag -d <tagname>

但是该指令不会删除远程仓库中的标签 ,还需要使用如下命令来更新远程仓库:

git push remote :refs/tags/<tagname>
  • 切换标签

使用git checkout <tagname>指令即可将git仓库的HEAD指针指向标签所在的提交,如下:

git checkout v1.0

VScode中的Git使用

本地仓库操作

当对仓库已经被跟踪的文件进行修改的时候,会有三种文件状态。如图:

  • M(Modify),表示该文件存在修改
  • D(Delete),表示该文件被删除
  • U(Update),表示该文件是新添加的

选中文件即可查看已进行的修改

接下来可以对这些更改进行处理,可以选择放弃修改或者保存修改,选择放弃修改的话,该文件就会回退到上次保存的版本

也可以点击上面的图标对所有更改进行处理

我们选择保存所有修改,所有已修改文件就会保存到暂存区,对应的git命令为git add .

接下来将暂存区的改动提交到本地的版本库,点击上方的“√”,对应git命令git commit,然后添加message即可

这时候所有的修改就已经处理完毕了

推送到远程仓库

将本地仓库上的修改推送到远程仓库,对应git命令git push

一般情况下,VScode会弹出账号密码的输入窗口进行登录

最后查看远程仓库:

从远程仓库拉取

与推送类似,如图,对应git命令git pull

分支管理

VScode可以直接在左下角创建/切换分支

合并分支

如果待合并的分支上的修改和master没有冲突,就可以直接合并。但是在多人协作时常常会出现两个分支存在不同修改的情况,这时候就要对这些冲突进行处理:

GitLens插件

使用VScode自带的git支持对于个人开发来说已经足够了,但是在应对团队协作时的文件冲突时还略显不足,这时候我们可以借助VScode中的GitLens插件,使用方法详见git源代码管理插件GitLens

参考

Git 分支管理最佳实践

Git教程

VScode 结合git的全面使用流程,再也不用记住git的命令了!

https://oschina.gitee.io/learn-git-branching/

Git操作详解以及在VScode中的使用相关推荐

  1. IDEA 使用 Git 操作详解

    目录 IDEA 配置 Git Git clone 克隆项目 Git init 初始化本地项目并推送 Git add 添加文件到暂存区 Git commit 提交文件 Git push 推送文件到服务器 ...

  2. Git实战:branch分支操作详解

    什么是分支 分支是指在主干道上分支的支线,可以前往不同的地方,也可以到达相同的终点(只是实现的路线不同).Git指向团队开发中的个体,各开发者可以有自己的分支,开发时不会影响其他分支的开发进度.分支完 ...

  3. 详解在Visual Studio中使用git版本系统 [转]

    详解在Visual Studio中使用git版本系统    作者:掷鸡蛋者 , 发布于2012-6-21   这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...

  4. java开发中常用的Git命令详解

    java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...

  5. tensorflow 读取cifar_对tensorflow中cifar-10文档的Read操作详解

    前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文 ...

  6. java中的getnumber怎么用_java安全编码指南之:Number操作详解

    简介 java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧. Numb ...

  7. python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)

    最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...

  8. thinkphp ajax volist,thinkphp中的volist标签在ajax中操作详解

    在一个ThinkPHP的复杂页面(包含volist)中实现volist标签显示Jquery查询结果的返回.本文主要和大家介绍thinkphp 中的volist标签在ajax操作中的特殊性(推荐),需要 ...

  9. 计算机操作指令arp,详解在win7电脑中操作ARP命令的详细步骤

    在我们的电脑中很多的设置都是需要一定的技巧来实现的,那在操作不同的设置的时候使用命令的形式是最快的方法,可以实现操作的命令也是很多的,那需要使用到ARP命令的小伙伴在网络上提问怎么实现使用的呢,其实A ...

最新文章

  1. 2021.09 电子学会 - 软件编程(图形化)试题讲解
  2. algid parse error, not a sequence错误
  3. STM32G071RB CubeMX ADC TIM DMA
  4. 首个windowsForm应用项目 1123
  5. ajax json java_ajax_json
  6. oid 值 内存使用_JVM:对Java内存模型的理解,你还停留在面试阶段吗?
  7. Lua面向对象之二:类继承
  8. c#WPF 扫雷游戏
  9. pb定时器timer
  10. 通用安防摄像机通过RTSP转RTMP推流进行H5(RTMP/HLS)直播的方案
  11. 三星固态性能测试软件,三星850 EVO 120G固态硬盘评测——性能测试与保养
  12. 微信小程序开发者工具出现Framework inner error错误
  13. AndroidCamera学习笔记二 基本流程及框架
  14. 珊瑚海-一站式动态化布局框架
  15. 像163邮箱一样的上传附件。。
  16. miui11升级鸿蒙,这就是MIUI 11的升级机型名单?还挺给力!
  17. 方差分析python实现
  18. linux 查看系统版本信息
  19. ubuntu 自定义开机画面
  20. soj 3172 Fisherman (01背包的装满)

热门文章

  1. 量子计算 10 隐变量、贝尔不等式与CHSH
  2. 第十九篇_字节码指令集与解析
  3. 面试必备:深入了解冒泡、选择和插入排序的优缺点
  4. C语言数据结构 单链表的建立、遍历、查找、插入和删除操作
  5. unity webGL在Django中运行
  6. 你想成为什么样的人?
  7. INVE锁仓增值DApp上线
  8. 计算机用于材料科学模拟,材料科学行为工艺的计算机模拟.ppt
  9. word使用技巧,论文中相当有用
  10. 云服务器有什么优点?与虚拟专用网络有什么区别?