git版本控制系统详细介绍

常用的git代码托管服务:

Git中存在两种类型的仓库,即本地仓库和远程仓库,如果搭建git远程仓库呢?
可以借助网上提供的代码托管服务来实现,常用的有GitHub,码云,GitLab等

  1. github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,所以改名为github
  2. 码云是国内的一个国内的代码托管平台,由于服务器在国内,所以相比于github,码云速度会更快
  3. GitLab是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务
Git常用命令:

环境配置:
当安装git后首先要做的事情是设置用户名称和email地址,这是非常重要的,因为每次git提交都会使用该用户信息
*设置用户信息
git config --global user.name ‘itcast’
git config --global user.email ‘[email protected]
*查看配置信息
git config –list
git config user.name

获取git仓库
要使用git对我们的代码进行版本控制,首先需要获得git仓库
获取git仓库通常有两种方式:
*在本地初始化一个git仓库
1.先创建一个文件夹,放你所有的本地仓库,进入其中一个仓库中(即文件夹),右键打开git bash命令窗口,也可以通过cd进入,总之一定要先进入你要操作的git本地仓库中
2.git init :初始化(创建)一个git本地仓库,创建后会产生一个.git隐藏文件夹,即代表创建成功,默认产生一个master主分支

 *从远程仓库克隆
    1.git clone https://gitee.com/zhu_wei_jian/vue_shop.git:地址即为如果所示的下载/克隆地址,表示从远程仓库中,把该仓库克隆到本地仓库中
工作目录,暂存区和版本库的概念:

版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息,日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方.
它们之间的关系如下: 开发修改后的代码需要先从工作区放入暂存区,然后才能提交

Git工作目录(工作区)下文件的两种状态:
  1. untracked未跟踪 (即未被纳入版本控制)
    例如:在工作区中手动创建一个文件
  2. tracked已跟踪 (被纳入版本控制)
    *Unmodified 未修改状态
    *Modified 已修改状态
    *Staged 已暂存状态

这些文件的状态会随着我们执行的git命令发生变化

本地仓库操作:
 git status:查看文件的状态,在工作区中
 git status -s:查看文件的状态,使输出的状态更加简洁
 git add  文件名 :把指定的某个未跟踪的文件加入暂存区
 git add . :把当前工作区中所有文件加入到暂存区
 git reset: 文件名:将暂存区内某个文件取消暂存
 git commit -m "初始化hello.txt文件:将暂存区的文件修改提交到本地仓库
总结:修改后的文件只有加入到暂存区中的文件才能提交,否则提交不做处理

git rm:删除文件,执行此命令删除后,默认暂存区中的也被删除了,只需要直接提交就行
手动再工作区删除:手动删除,默认暂存区中还存在此文件,需要放到暂存区中再提交才能删除
注意:删除的只是工作区的文件,本地仓库中没有动,还需要提交到暂存区再提交才能把本地仓库中的也删除

将文件添加到忽略列表:
一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,通常都是些自动生成的文件,比如说日志文件,或者编译过程中创建的临时文件等,在这种情况下,我们可以在工作区
中创建一个名为.gitignore的文件(文件名称固定),列出要忽略的文件模式

工作区中创建此文件命令:touch .gitignore
注意:在window中创建文件需要后缀前有名称,一般创建不出来,可以通过git命令工具创建

       *.a :表示所有以.a结尾的文件不在管理
       !lib.a :表示此文件除外,还要管理此文件
       Build/:表示此目录下的文件都忽略
        /TODO:  表示忽略此文件,不管理
         Doc/*.txt :表示doc目录下所有以.txt结尾的文件忽略
         Doc/**/*.pdf:表示在doc目录下,以及子目录中,所有以.pdf的文件都不再管理

git log:查看日志记录,查看日志时,输入Q可以退出日志

远程仓库操作:

查看远程仓库:
git remote:查看已经配置的远程仓库服务器,会列出下指定的远程仓库的简写
git remote -v:可以看到更详细的远程仓库的信息
git remote show origin:更详细
只要这个仓库是克隆过来的,默认已经配置了一个远程仓库,名字为origin,与该克隆过来的远程仓库建立了联系

添加远程仓库:
git remote add :添加一个新的远程git仓库,同时指定一个可以引用=的简写

从远程仓库克隆:
git clone : 默认配置下远程git仓库中的每一个文件的每一个版本都将被拉取下来,克隆的是远程仓库中几乎所有的数据(包括日志信息,历史记录等),而不仅仅是克隆工作所需要的文件

移除无效的远程仓库
git remote rm:如果因为一些原因想要移除一个远程仓库,可以使用
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库

从远程仓库中抓取与拉取:
Git fetch:从远程仓库获取最新版本到本地仓库(会发现在工作区中没有显示,不会合并到工作区中,其实是放在了.git目录下object文件里面),不会自动merge(合并)

Git pull:是从远程仓库获取最新版本并merge到本地仓库

注意:如果当前文件仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库中fetch(拉取)文件的时候会报错,解决此问题可以在git pull 命令后加入参数–allow-unrelated-histories

推送到远程仓库:
Git push [remote-name] [branch-name]:可以将其推送到远程仓库
例如:git push origin master

推送配置:
git config --global push.default “current”:可通过此命令设置默认的推送分支

Git分支;

查看分支:
Git branch :列出所有本地的分支
Git branch -r :列出所有关联的远程仓库的分支
Git branch -a:列出所有本地分支和远程的分支

创建分支:
Git branch :创建一个name分支

删除本地分支:
Git branch -d :删除本地分支,没有修改的情况下
Git branch -D :在修改了文件又没有推送的情况下,强制删除分支

删除远程仓库分支:
Git push origin -d :删除远程仓库的分支

切换分支:
Git checkout :切换到branchName分支

合并分支:
Git merge :合并branchName分支到当前分支下
如:git branch b1
注意:如果你在不同的两个分支中,对同一个文件的同一部分进行了不同的修改,git就没办法合并它们,同时会提示文件冲突,此时需要我们打开冲突的文件并修复内容,最后执行git add 命令来标识冲突已经解决

Git标签:
Git可以给历史中的某一个提交打上标签,以示重要,比较有代表性的是人们会使用这个功能来标记发布结点(v1.0,v2.0)。标签指的是某个分支某个特定时间点的状态,通过标签可以很方便的切换到标记时的状态

列出已有的标签:
Git tag :列出所有标签
Git show [tag]:查看tag信息

创建标签:
git tag [tagName]:新建一个tag,一般情况下都是使用版本号当作标签名

提交标签:
Git push [remoteName] [tag]:推送提交指定的tag到远程仓库中
例如:git push origin v1.0

检出(提取)标签:
Git checkout -b [branch] [tag]:以某个tag标签为基础,复制文件新建一个分支,并且切换到此分支

删除标签:
Git tag -d [tag]:删除本地tag
Git push origin :refs/tags/[tag]:删除远程tag
例如:git push origin :refs/tags/v0.1

使用TortoiseGit管理文件版本:

下载和安装:
TortoiseGit是一款开源的git图形界面工具,使用TortoiseGit可以简化git相关的操作(本质上还是执行git的相关命令),下载地址:https://tortoisegit.org/download/,安装完成后,在任意目录右键,如果看到tortoiseGit则说明安装完成

使用SSH协议传输数据:
由于git的远程仓库并不在我们本地,当我们在使用远程仓库的时候(例如克隆,拉取,推送)就会涉及到数据的网络传输,git支持多种数据传输协议
*本地协议(Local)
*HTTPS协议
*SSH(secure Shell)协议
*Git协议
码云只支持HTTPS协议和SSH协议
注意:前面的操作都是基于HTTPS协议进行的

什么是SSH协议?

SSH为Secure Shell(安全外壳协议)的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全的协议,利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
由于本地Git仓库和远程仓库之间的传输是通过SSH加密的,所以必须要让远程仓库服务器认证你的SSH key,在此之前,必须要生成SSH key
使用SSH协议通信时,推荐使用基于密钥的验证方式,你必须为自己创建一对密钥(公钥和私钥),并把公钥放在需要访问的服务器上

注意:使用HTTP协议也需要验证,验证的是码云的账号和密码,第一次推送的时候已经输入过了,会保存在系统的凭证上,第二次再推送时不再需要输入

配置SSH协议:

1.使用命令 ssh-keygen -t rsa 生成公钥和私钥,执行完成后在window本地用户.ssh目录 C:\Users\用户名.ssh下面生成公钥和私钥

2.复制公钥文件内容到码云服务器,添加公钥即可

  1. 使用SSH协议克隆远程仓库就不会产生问题了
发布了41 篇原创文章 · 获赞 3 · 访问量 4599

猜你喜欢

转载自blog.csdn.net/fesfsefgs/article/details/104115887