git

一. Git是什么

Git是一个分布式版本控制系统

二. Git的工作流程与原理

  • Workspace:工作区
  • Index/Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

在这里插入图片描述

三. Git与SVN的最主要区别

  1. SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就会很慢
  2. Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

四. 安装git及配置用户信息

1.检测是否安装成功

git --version

或者:点击右键出现下图

在这里插入图片描述

2.git用户配置

  • 因为Git是分布式版本控制系统,所以安装完git之后需要填写用户名和邮箱作为一个标识

  • 通过命令显示当前的Git配置

    $ git config --list  # 可以查看到用户名和邮箱
    
  • 设置提交代码时的用户信息 ------先配置用户名后配置邮箱,否则配置不成功

    $ git config [--global] user.name "[name]"  #配置用户名
    $ git config [--global] user.email "[email address]" #配置邮箱地址
    

在这里插入图片描述

注意:

git config --global参数,有了这个参数,表示你这台机器上所有的git仓库都会使用这个配置,也可以对某个仓库指定不同的用户名和邮箱

五. Git常见的命令和操作

1.新建代码仓库

  • 在当前目录新建一个git代码库

    $ git init
    
  • 新建一个目录,将其初始化为git代码库

    $ git init [文件夹名称]
    
  • 下载一个项目和它的整个代码历史

    $ git clone [url]
    
  • 克隆远程仓库时 会同时把日志 和 远程仓库地址一起复制下来

2.查看信息

# 显示有变更的文件
$ git status
# 显示当前分支的版本历史
$ git log
#显示远程仓库信息
$ git remote -v
# 显示某个远程仓库的信息
$ git remote show [remote]

3.Git的三个区

  • 工作区
    在这里插入图片描述

  • 暂存区
    在这里插入图片描述

  • 历史区
    在这里插入图片描述

生成一个版本,只能将暂存区的内容生成版本。上传的时候只能上传历史区的内容

将源文件添加到暂存区:

4.git的两个特殊文件

  1. .gitkeep 文件

git 不会管理空的文件夹,gitkeep可以让git管理空文件夹

  1. .gitignore 文件

在这个文件中输入不需要管理的文件,这些文件就可以忽略被git管理

5.添加/删除文件

1.添加
  • 添加指定文件到暂存区
$ git add [file1] [file2]  //file为文件名字
  • 添加指定目录到暂存区,包括子目录
$ git add [dir] //dir为文件夹名称
  • 添加当前目录的所有文件到暂存区
$ git add .
2.撤销
1.将暂存区拉回工作区
$ git reset HEAD -- 文件  #将某个文件从暂存区变为源文件
$ git reset HEAD -- 文件夹  #将整个文件夹从暂存区变为源文件
$ git reset HEAD -- .  #将所有文件从暂存区变为源文件
2.撤销更改操作

使用场景:文件提交到本地仓库之后又进行了修改

  • 更改之后的显示
    在这里插入图片描述

  • 查看区别

$ git diff text.txt

在这里插入图片描述

  • 撤销更改操作
$ git checkout -- text.txt
3.版本回退
$ git reset --hard HEAD^  #有几个上档键就回退几个版本
$ git reset --hard 历史版本号
4.恢复暂存区
$ git checkout [file]  # 恢复暂存区的指定文件到工作区
$ git checkout .  # 恢复暂存区的所有文件到工作区

6.将代码提交到本地仓库

  • 将暂存区指定文件提交到本地仓库

    $ git commit [file1] [file2] ... -m "版本说明"
    
  • 将暂存区所以代码提交到本地仓库

    $ git commit -m "版本说明"
    

7.分支

  • 创建分支,并停留当前分支

    $ git branch [branch-name]
    
  • 切换分支

    $ git checkout [branch-name]
    
  • 切换上一个分支

    # 切换到上一个分支
    $ git checkout -
    
  • 新建一个分支,切换到该分支

    $ git checkout -b [branch]
    
  • 列出所有本地分支

    $ git branch
    
  • 列出所有远程分支

    $ git branch -r
    
  • 列出所有远程分支和本地分支

    $ git branch -a
    
  • 合并指定分支到当前分支

    $ git merge [branch]
    
  • 删除本地分支

    $ git branch -d
    
  • 删除远程分支

    $ git push origin --delete index #为添加远程仓库地址的变量名
    

8.上传远程仓库操作

1.推送远程仓库命令
$ git push <远程主机名> <本地分支名>:<远程分支名>  #提交过程

注意:

如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会在远程仓库被新建

例如:

$ git push origin master #本地的master与远程的master分支建立 “追踪关系”
$ git push origin index  #远程与本地建立 "追踪关系" 远程仓库不存在index时 会被新建
2.拉取远程仓库版本
git pull <远程主机名> <远程分支名>:<本地分支名>   #拉取过程

注意:

如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名)

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

9.建立远程仓库-以gitee为例

1.创建远程仓库
在这里插入图片描述

2.仓库初始化

在这里插入图片描述

注意:

  • 创建远程仓库默认会创建一个master主分支

  • 选择模板进行创建仓库时,默认存在一次提交,实际操作不一样

六.Git上传远程仓库过程分析

单个主分支(master)使用过程

1.本地仓库上传远程仓库
1.在本地文件夹下初始化一个本地仓库

注意:

  • 使用 git remote -v 不会显示远程仓库信息

  • 也不会有master分支,自动创建master分支无效,只有提交一次版本信息,会自动创建一个master分支
    在这里插入图片描述
    在这里插入图片描述

2.添加上传地址:
  • 可以添加多个,建议一个
    在这里插入图片描述
#其中的origin是变量名表示上传地址,可以自定义
$ git remote add origin https://gitee.com/caivictor/huaiwei.git 
3.开始上传:
$ git push -u origin master # 其中的origin是表示地址的那个变量名

注意:

第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

  • 首次推送时需要用户名和密码

  • 第二次上传时只需要

$ git push
4.合并分支提交
  • 在本地创建新分支并且在该分支下无法提交到远程仓库
    在这里插入图片描述

因为分支未设置要提交远程的分支

  • 解决方案

    1.可以将其合并主分支 master 或者已经和远程仓库建立了 ”追踪关系“的分支上再进行提交

    2.直接推送本地分支到远程仓库–远程仓库不存在时自动创建该分支

    $ git push -u origin index  #将本地index分支推送到远程仓库里
    

    注意:

    使用 -u 参数,第二次提交时 ,直接使用 git push 命令

    3.建立追踪关系,在现有分支与指定的远程分支之间

    $ git branch --set-upstream [branch] [remote-branch]
    
5.解决分支冲突

在这里插入图片描述

  • 让本地与远程同步
$ git pull
  • 开辟新的分支,然后进行分支合并
git fetch origin master:tmp # 使用 fetch 获取远程最新信息并开辟一个临时分支
git diff tmp # 将当前分支和远程分支进行对比
git merge tmp # 将临时分支合并到当前分支
2.从本地仓库上传至含有Readme.md模板文件的远程仓库

1.使用模板初始化的仓库默认有提交次数
在这里插入图片描述

2.添加上传地址

$ git remote add https://gitee.com/caivictor/ta.git

3.开始上传----会上传失败

$ git push -u origin master

注意:

此时上传报出错误提示,原因是 本地仓库master分支 未与 远程仓库建立 “追踪关系”,远程仓库存在历史版本信息,无法建立“追踪关系”。 因为远程仓库存在自己历史版本信息,本地仓库也存在自己的历史版本信息,实际的情况是远程仓库和本地仓库是两个不同的的仓库,可以合并两者的版本信息进行合并

在这里插入图片描述

可以使用以下命令解决:

$ git pull origin master --allow-unrelated-histories  #合并俩不同仓库的版本信息
3.克隆远程仓库过程

1.使用命令将远程仓库克隆到本地仓库

$ git clone

注意:

从远程克隆到本地仓库时,本地分支默认与远程仓库的分支建立 “追踪关系” ,自动得到默认设置 origin 远程仓库地址,和分支的版本信息。若远程仓库存在多个分支时,在本地仓库使用 git checkout [branch-name] 命令对远程仓库进行切换分支时,默认与远程仓库的该分支建立 “追踪关系” ,处理分支冲突和上传时操作一致

2.解决分支冲突和上传时

$ git push  #上传
$ git pull  #解决分支冲突

特殊情况输入

shift : 输入 wq

可以使用以下命令解决:

$ git pull origin master --allow-unrelated-histories  #合并俩不同仓库的版本信息
3.克隆远程仓库过程

1.使用命令将远程仓库克隆到本地仓库

$ git clone

注意:

从远程克隆到本地仓库时,本地分支默认与远程仓库的分支建立 “追踪关系” ,自动得到默认设置 origin 远程仓库地址,和分支的版本信息。若远程仓库存在多个分支时,在本地仓库使用 git checkout [branch-name] 命令对远程仓库进行切换分支时,默认与远程仓库的该分支建立 “追踪关系” ,处理分支冲突和上传时操作一致

2.解决分支冲突和上传时

$ git push  #上传
$ git pull  #解决分支冲突

特殊情况输入

shift : 输入 wq

输入wq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值