版本控制系统(vcs)Git

本文介绍了Git作为版本控制系统的基本概念、安装步骤、与SVN的区别。详细讲解了Git的工作模式,包括工作区、暂存区和版本库,并列举了Git的常用命令,如add、commit、push、pull等。此外,还探讨了Git的分支管理和远程操作,强调了分支在Git中的重要性。通过实例展示了如何创建、切换、合并和删除分支,以及如何将本地仓库推送到远程仓库。

一.Git安装

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

可以直接去官网下载::Git - Downloads

同时也可以找我要压缩包都可以的,共同学习、共同进步。

下载解压完 一直点next安装就可以了,安装好了就是这个样子。

然后找到git-bash.exe打开即可,Git可以使用Linux大部分操作命令。建议先学习Linux再学习Git,效果会好一些。可以看看下面这章

Linux_CSDNzgcxy的博客-CSDN博客

 打开后可以看到以下 是没有被初始化的

1.初始化:使用当前目录作为Git仓库,我们只需使它初始化。

该命令执行完后会在当前目录生成一个 .git 目录。

也可以指定目录做Git仓库

git init

 然后就成了以下这样 

 接下来去GitHub官网注册一个账号,这个外网可能比较慢或者浏览器的影响导致进不去,多试几次就好了。

然后用以下命令,设置提交代码时的用户信息 ,与官网创建的保持一致,记得带双引号

git config --global user.name "name"  

git config --global user.email  "邮箱"

二.介绍

  1. Git是一个开源分布式版本控制系统,用于敏捷高效处理任何或大或小的项目。
  2. Git是著名黑客Linus Torvalds (芬兰赫尔辛基大学学生)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
  3. Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

三.Git与SVN的区别

SVN:集中式多人协作版本控制系统,需要专门的服务器,统一的版本库。不太适用,比较容易冲突

Git:分布式多人协作版本控制系统,每一个人都拥有一套完整的版本库(独立的项目)

  1. Git 是分布式的,SVN 不是 :这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  2. Git 把内容按元数据方式存储,而 SVN 是按文件所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  3. Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  4. Git 没有一个全局的版本号,而 SVN 有 :目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  5. Git 的内容完整性要优于 SVN :Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

四.工作区、暂存区、版本库的基本概念

工作区:就是你能在电脑里能看到的目录

暂存区:英文叫 stage 或 index。一存般放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),中间介

版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

五.Git基本操作

学习Git之前一定要把Git的工作模式玩明白了,才好进行下一步的学习

1.Git工作模式(重点

Git的工作就是创建和保存你的项目的快照以及和后面的快照进行对比

Git六个常用命令:git clonegit pushgit addgit commitgit checkoutgit pull

以下是工作模式的图  当你认真看完回过来看会觉得这张图非常清晰

1.workspace 工作区

2.staging area  暂存区(缓存区)

3.local repository  版本库(本地仓库)

4.remote repository 远程仓库

1.创建仓库的命令

1.git init 命令

用于在目录中创建新的 Git 仓库,这样子就初始化了一个Git仓库,项目就生成了一个.git的子目录,这就是Git仓库了,.git默认是隐藏的 ls-a命令查看

2.git clone 命令

拷贝一个Git仓库到本地,可以进行查看或修改

git clone [要拷贝的项目]

2.提交与修改

1.git add命令

可以将一个或多个文件添加到暂存区  ,文件在git add 后被修改,可以使用git status -s来查看当前状态AM代表被修改了,可以再次添加到暂存区做更新操作。

git add     文件名一个或多个

git add .   当前目录所有未提交的文件到暂存区

git add *  把整个目录及子目录的文件添加到暂存区

 2.git status 命令

查看仓库当前状态,显示有变更的文件 使用参数-s可以简短的输出,出现AM代表添加过后修改过

git status -s

 3.git diff 命令

仅比较工作区和暂存区的差异

显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别

4.git commit 命令

将暂存区的内容添加到本地仓库

git commit -m 【message】message可以备注信息,建议操作的时候都加上。维护方便

git commit -a   修改文件后不需要执行git add命令,直接提交给本地仓库

5. git reflog 命令

用于退回版本,可以指定某一次提交的版本

git reflog --mixed:默认参数,可以不带,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变

git reflog --soft:用于退回之前某个版本

git reflog --hard:撤销工作区所有未提交的修改内容,将暂存区和工作区都回到上一次版本,并删除之前所有的信息提交,不要随便使用,他会删除回退之前的所有信息

HEAD:可以使用^表示上一个 ,两个表示上上版本,以此类推,也可以用~0表示当前版本

~1表示上一个版本,以此类推。

6.git rm 命令

用于删除文件

git  rm  file  将文件从工作区和暂存区删除文件

git  rm  -f  file  如果删除之前做过修改并且放到了暂存区 就需要加上-f强制删除

git  rm --cached  file 如果只想在暂存区移除就使用这个,跟踪清单删除

git  rm  -r  *  递归删除当前整个目录以及子目录的文件和文件夹

7.git mv 命令 

用于移动和重命名一个文件、目标或软连接。

git mv old_file new_file  如果修改不了也可以使用参数-f强制修改

3.提交日志 

1.git log 命令

git log 查看历史提交记录

git log  --blame file 以列表形式查看指定文件的修改记录

git log  --oneline 查看历史记录最简洁的版本

git log --graph  查看历史中什么时候出现了分支、合并

git log --reverse  逆向显示所有日志

4.远程操作

1.git remote 命令

用于远程仓库的操作

git remote -v          查看远程仓库信息 origin为远程仓库的别名

git remote show 【远程仓库别名】       查看某个远程仓库信息

git add  【远程仓库别名】 【连接远程仓库的url 后续会讲】   添加远程版本库

git remote rm name      删除远程版本库

git remote rename  old_name  new_name  修改远程版本库别名

2.git fetch 命令

 git merge  从远端仓库提取数据并尝试合并到当前分支

git  fetch    在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支

以上命令将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支

3.git pull 命令

用于从远程获取代码并合并本地的版本

git pull 其实就是git fatch和git merge FETCH_HEAD的简写

格式 :git pull  远程主机名 远程分支名:本地分支名

git pull 

git pull origin 更新本地仓库操作

git  pull origin master :brantest 将远程主机 origin的master分支拉过来,与本地分支brantest合并,如果远程分支是和当前分支合并,则冒号部分可以省略,如下:

git pull origin master 取回origin和master,再与本地brantest分支合并

4.git push 命令

 用于将本地分支版本上传到远程仓库并合并

格式:git push 远程主机名 本地分支名 :远程分支名

如果本地分支名和远程分支名相同可以省略冒号以后的

git push origin master 将本地master分支推送带origin主机的master分支 相当于  git push origin master:master

git push --force origin master 如果本地版本和远程版本存在差异可以使用参数强制推送

git push  origin --delete master 用于删除origin主机的master分支

把文件推送到远程仓库总体操作

 touch 文件名  创建一个文件

git add 文件名  将单个文件添加到暂存区

git  -m commit  “备注”  提交到本地版本库

连接远程版本库

git remote add origin 【url】需要去官网创建一个仓库,GitHub 和 Gitee 都可以

git push origin master  将本地版本库推送到远程版本库

六.Git 分支管理(重点)

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,不影响主线工作,有人把Git分支模型称为必杀技特性,原因是能将Git从版本控制系统家族区分开出来。这是工作当中必须熟练掌握的

git branch (branchname)创建分支

git checkout (branchname)切换分支

git checkout -b (branchname)  创建切换分支

当你切换分支的时候,Git会用该分支最后提交的快照替换你的工作目录的内容,所以多个分支不需要多个目录。

git merge   (branchname)  合并分支

你可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支

git branch 列出你在本地的分支

当你在上次更新过后创建了新分支,如果后面又有更新提交,然后又切换到了新分支,Git将会还原你的工作目录到你创建分支时候的样子  使用分支可以把我们的工作切分,让我们在不同的开发环境做事,来回切换。

git branch -d (branchname) 删除分支

相信大家都玩过英雄联盟,没玩过或许也听过,我们就拿英雄联盟版本更新来看分支管理

通过以下图片可以看到,代码库有且只有一个主分支,所有提供给用户使用的正式版本,都在主分支(master)发布

 那么版本更新毋庸置疑在后面的发布的版本的内容那是肯定要包含前面版本的所有内容的吧,要不然你前一个版本用钱买的英雄和皮肤,他更新了一下就说没有了。那岂不是要口吐芬芳了,所以后面的版本里必须要包含前面的版本内容。还有就是用户在第三次更新之后反馈说亚索的Q一刀秒杀,这不是离谱他妈给离谱开门,离谱到家了。那我们是不是得立马修复这个bug,不然就会导致用户游戏体验。当我们在亚索修复完以后,是直接发布嘛?并不是而是在二次更新和三次更新中间发布一个小版本。肯定不能还去发布后面的版本,这样子就会导致旧版本丢失某些文件导致报错。就相当于今天的你和昨天的你,你只能往着明天去,而不能往昨天去,版本更新其实也好似一个时间里程碑,哪个版本出现问题就解决哪个分支的问题。


 

 后续持续更新 感谢支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值