赞
踩
我们先理清Git和Github的区别,Git是个版本控制的工具,用来管理本地的代码工程,它可以记录代码内容的变更;而Github是一个代码托管平台,我们可以使用Git将本地代码上传到Github。
那为什么要学Git,上面说到Git是一个版本控制工具,它可以记录代码内容的变更,方便我们对项目的管理,它主要有以下的用途:
代码备份
举一个简单的例子,写好一个程序后,想要再加一个新功能,添加这个新功能需要对很多个文件进行改动。但是添加完这个功能后发现,这个新功能是个坑,然后就会想着回退到上一个版本,这时候如果有备份还好,没有备份的话就得ctrl+z
,甚至要按照自己的记忆恢复以前的版本
如果使用Git就好办了,直接使用git切换下版本或者分支就可以了。
当然先备份一下原始代码,然后在上面改,也是一个很简单且有效的方法,但是随着新功能的增加,程序所占用的内存越来越大,而且每个版本间的区别很难直观看出,这不利于我们对项目的管理
多人协作
假设要做一个项目,这个项目中有多个功能,大多数情况下,我们不可能一个功能一个功能地做,而是进行团队分工,多个功能同步进行,这时候如果没有使用Git进行版本控制,那么在将这些功能统合时将会出现很大的问题
以后工作的需要
目前很多公司都在用Git进行项目管理,学会Git对以后的工作还是很有好处的
本文将介绍Git的基本工作流程,以及这些流程对应的命令行指令,最后对VScode中内置的Git进行介绍和演示
Git在Windows上和在Linux上的使用方式基本无差别,所以本文中的演示主要在Windows上进行
在这里可以下载最新版的Git,然后一路Next即可
sudo apt-get install git
基本工作流程图:
git的基本工作流程如下:
为了方便以后的学习和工作,不建议直接使用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.0
、v2.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
当对仓库已经被跟踪的文件进行修改的时候,会有三种文件状态。如图:
选中文件即可查看已进行的修改
接下来可以对这些更改进行处理,可以选择放弃修改或者保存修改,选择放弃修改的话,该文件就会回退到上次保存的版本
也可以点击上面的图标对所有更改进行处理
我们选择保存所有修改,所有已修改文件就会保存到暂存区,对应的git命令为git add .
接下来将暂存区的改动提交到本地的版本库,点击上方的“√”,对应git命令git commit
,然后添加message即可
这时候所有的修改就已经处理完毕了
将本地仓库上的修改推送到远程仓库,对应git命令git push
一般情况下,VScode会弹出账号密码的输入窗口进行登录
最后查看远程仓库:
与推送类似,如图,对应git命令git pull
VScode可以直接在左下角创建/切换分支
合并分支
如果待合并的分支上的修改和master没有冲突,就可以直接合并。但是在多人协作时常常会出现两个分支存在不同修改的情况,这时候就要对这些冲突进行处理:
使用VScode自带的git支持对于个人开发来说已经足够了,但是在应对团队协作时的文件冲突时还略显不足,这时候我们可以借助VScode中的GitLens插件,使用方法详见git源代码管理插件GitLens
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。