Git介绍及常用命令(系统:Win11)

一、什么是Git?

  1. Git是一个分布式的版本控制工具,多用来对开发过程中的源代码文件进行管理。
  2. Git不同与svn、csv这两个集中式的版本控制系统,它是分布式
  3. Git是目前世界上最先进的分布式版本控制系统。

什么是分布式?集中式又是什么?

  1. 集中式:集中式的版本控制系统的版本库集中放在服务器上。当我们写代码时会从服务器将最新的代码下载过来一份,然后编写完成后将自己的代码提交到服务器。使用集中式版本控制需要联网,如果断网则无法使用,且个人电脑只存放当前版本信息,其他信息存放在服务器,如果服务器数据不幸丢失…
  2. 分布式:分布式和集中式不同,每个人的电脑都相当于一台服务器,当我们从远程仓库拉取代码时,会获取到全部的信息,我们可以在本地对代码自由地进行回滚、提交到本地仓库、切换分支等操作,只有将本地仓库与远程仓库合并(执行推送操作和拉取操作)时需要联网。

二、Git安装:

  1. Git官网下载链接
  2. 根据自己系统类型下载后一直下一步就可以了
  3. 最后安装成功后在任意目录右键菜单可以看见这两个新增项,(win11需要先点击更多选项)
    在这里插入图片描述
  4. Git GUI Here: 打开Git图形界面
  5. Git Bash Here: 打开Git命令行

三、Git全局配置

参数介绍:

config: 配置git环境
--global: 表示全局

配置用户名:

 git config --global user.name "用户名"		

配置邮箱:

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

查看配置信息:

git config --list

也可以不配置,后面需要用的时候再手动输入也可以

四、Git相关概念(版本库、工作区、暂存区)

4.1 版本库:

通过Git创建本地仓库或者从远程仓库克隆的仓库中的隐藏文件夹 “.git” 就是版本库,在版本库内部存放了当前Git仓库的很多配置信息、日志信息、文件版本信息等。内部文件Git自动维护,

4.2 工作区

包含".git“隐藏文件夹的目录就是工作区,也就是我们创建Git仓库是的空白文件夹,平常我们开发时存放的代码就放在这个区域。换句话说就是我们平时写代码的地方就是工作区。

4.3 暂存区

”.git“ 文件夹内部有一个”index",这个就是暂存区。暂存区是一个临时保存修改文件的的地方。

4.4Git工作流程

在工作区编写好代码后通过git add指令将文件提交到暂存区,然后通过git commit指令提交到版本库

4.5 Git工作区中文件状态

  • untracked 未跟踪(没有将当前文件纳入Git版本控制)
  • tracked 已跟踪(当前文件已被纳入版本控制)
    • Unmodified 未修改状态(当前文件内容和上次提交内容相同)
    • Modified 已修改状态(当前文件内容和上次提交内容不同)
    • Staged 已暂存状态(当前文件以纳入管理且没有提交过)

文件状态不是一成不变的,会随着我们执行Git的命令发生变化

五、Git常用命令

5.1 创建仓库

5.1.1 创建本地仓库
  1. 在任意目录下创建一个新的空目录作为本地仓库
  2. 进入该目录,打开 Git bash窗口
  3. 输入指令 git init
  4. 如果出现隐藏目录 “.git” 则说明创建成功

创建前:
在这里插入图片描述
执行后:
在这里插入图片描述

5.1.2 从远程仓库克隆一个仓库

在任意一个非其他仓库的目录下执行git clone url即可,在Git中,仓库之间不可以互相嵌套。
执行前:
在这里插入图片描述
执行后:
在这里插入图片描述
注:如果远程仓库私有,需要输入验证身份才可以下载

5.2 本地仓库操作

  • 查询文件状态:git status,如果想要查看指定文件状态就在指令后加上文件全名(需要有后缀名),如:git status file.txt
    在这里插入图片描述

  • 将文件添加到暂存区: git add fileName,添加所有文件到暂存区是:git add .
    在这里插入图片描述
    在这里插入图片描述

  • 提交暂存区文件到本地仓库:git commit -m "提交信息" 如果要提交指定文件就在后面加上文件名git commit - m "提示信息" fileName.txt,提交信息没有固定要求,一般写一下这次提交的内容是什么,做一个解释说明就可以了。
    在这里插入图片描述
    此时,我对test.txt文件内容进行了修改,可以看到,此时文件状态再次发生改变,变成了modified,已修改状态
    在这里插入图片描述

  • 将暂存区内文件取消暂存git resit fileName.txt或者切换到指定版本:git reset --hard 版本库id
    在这里插入图片描述
    回退到指定版本库(因为test1.txt文件未被git进行控制,所以无法对它进行修改,但其他被控制的文件已恢复到指定版本时的状态):
    在这里插入图片描述
    这一长串commit_id可以通过git log指令查看日志获取

  • 查看日志:git log
    在这里插入图片描述

5.3 远程仓库操作

  • 查看远程仓库 git remote,可在后面添加参数-v来查看更详细的信息在这里插入图片描述
  • 添加远程仓库git remote add remote-name url,remote-name: 就是远程仓库别名,我这里命名成了origin;url就是远程仓库地址,可以在远程仓库处获取。
    在这里插入图片描述
  • 克隆远程仓库:git clone url,更详细的内容在本文 “5.1.2 从远程仓库克隆一个仓库”,此处就不再赘述了。
  • 将本地仓库内容推送到远程仓库: git push remote-name branch-name remote-name: 远程仓库名,也就是上面起的别名,branch-name: 分支名
    在这里插入图片描述
    推送后的远程仓库(我用的gitee,国内正常情况下github加载太慢,如果要用github切换url就可以了):
    在这里插入图片描述
    :执行推送操作需进行身份验证,一般只有第一次执行推送操作时需要
  • 从远程仓库拉取代码到本地:git pull [remote-name] [branch-name]
    在这里插入图片描述

:如果当前本地仓库不是从远程仓库克隆,且仓库中存在文件,此时执行拉取操作时会报错fatal:refusing to merge unrelated histories,可以在命令后面添加--allow-unrelated-histories解决此问题

5.4 分支操作

注:每个分支内的文件相互独立,互不影响,即:在a分支内添加/删除/更新文件,b分支内文件状态不变。如下图:master分支中有master.txt文件,但div分支中没有。且div分支有div.txt文件,master分支下没有
master分支:
在这里插入图片描述
div分支:
在这里插入图片描述

  • 查看分支:git branch 后面不添加参数查看本地分支,添加参数-r查看远程分支,添加参数a查看所有分支
    在这里插入图片描述

  • 创建分支:git branch name name:分支名
    在这里插入图片描述

  • 切换分支:git checkout name
    在这里插入图片描述

  • 推送至远程仓库:git push remote-name name 推送本地仓库到远程仓库remote-name里面的name分支。
    在这里插入图片描述

  • 合并分支: git merge name 将当前所在分支A和指定分支name合并。下图是将master分支合并到div分支,执行合并分支操作后会有一个界面让编写合并日志(等同于提交操作时的提交信息),可以自己编写(按 " i " 进入编写模式,结束编写按 " esc " )合并信息,亦可以直接退出(先按" : ",在输入wq,回车)用默认生成的信息。
    在这里插入图片描述
    分支冲突问题

    • 产生原因:合并的两个分支存在相同文件,并且两个分支都对该文件进行了修改并提交,则可能出现分支冲突问题。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 解决方法:

      1. 进入冲突文件master.txt文件手动解决冲突
        在这里插入图片描述
        在这里插入图片描述
      2. 将解决完冲突后的文件添加到暂存区并提交到本地仓库,提交时可能会出现错误fatal: cannot do a partial commit during a merge., 意思是:在合并期间不能执行部分提交。可以在提交指令后面添加参数-i解决
        在这里插入图片描述

5.5 标签操作

标签,记录了某一个分支某一个时刻的状态,是静态的,不可修改的。通过标签,我们可以快速切换到标记时的状态。应用也很广泛,比如使用标签来标记发布节点(软件不同版本v1.0,v1.0.12,v2.0等)。

  • 查看已有标签git tag
    在这里插入图片描述

  • 创建标签git tag name
    在这里插入图片描述

  • 推送标签到远程仓库git push [remote-name] [name]
    在这里插入图片描述

  • 创建一个新的分支并签出到指定标签git checkout -b [branch] [name]
    在这里插入图片描述

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值