Git从安装到基本使用(保姆教程2023)

Git安装

安装

1.先去官网下载这个软件, 准备安装到本电脑中

git-scm.com/

 2.根据自己电脑系统下载此软件到本机

Windows 系统直接下载 .exe 文件即可,macOS 系统使用 Homebrew 命令行安装,终端输入 git --version 确认安装 

image-20230612100943906.png

3.默认选择默认安装路径即可,如若想更改路径,务必使用英文路径

4.对于 Windows 系统,查看安装是否成功: 在任意文件夹右键, 查看是否有Git Base Here 选项, 有就成功了 

image-20230612101818017.png


介绍

Git的三个区域:

  • 工作区: 处理工作的区域
  • 暂存区: 临时存放的区域
  • 本地git仓库: 最终的存放区域

在文件夹的体现如下:

  • 工作区: 在你电脑里看到的目录
  • 暂存区: 在.git文件夹内的index中 (二进制记录)
  • 版本库: 指的整个.git文件夹 (也认为是本地仓库)

在代码中的体现如下:

image-20230612154411204-1687173588607.png

Git使用

官方文档:教程链接

菜鸟教程:教程链接

Git配置 

安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 因为每一个 Git 提交都会使用这些信息

命令格式如下: 中文自己看情况换

git config 固定命令, 设置git相关配置

--global 全局配置: 一次配置, 整机在使用git时都生效

git config --global user.name 你的用户名
git config --global user.email 你的邮箱地址

运行命令效果如下:

image-20230612130038686.png

 配置后, 可以运行如下命令查看是否成功

git config --list
#如果信息太多,可以输入 q 退出

运行命令效果如下: 

image-20230612130350943.png

出现以上内容即为注册成功

如果后续想要修改,只需要重新执行一下命令即可

vscode中文件右侧标记 

一般打开一个包含git仓库的文件夹时, 会有这些标记 

image-20220625155941259.png

右侧没有标记的时候为“未修改” 或 此文件/文件夹, 被git忽略不跟踪变化
M为“已修改”
A为“已添加”
D为“已删除”
R为“已重命名”
C为“已复制”
U为“已更新但为融合”

Git基础命令

初始化空的Git仓库 

我们新建一个 文件夹 / 现有的文件夹 并不是git仓库,因为没有 .git 文件夹, 所以没有被 git 管理。可以在 新文件夹 / 现有文件夹, 可以运行如下命令, 得到.git文件夹, 即可让git开始准备管理

# 初始化 git 仓库, 产物: .git 文件夹 (所在文件夹"内"被管理) git init

例如,在新文件夹中输入git init命令用于初始化空的git版本库 

image-20230612141325305.png

初始化空的git仓库成功后,在项目文件夹中,显示隐藏文件,即可查看 .git 文件夹。对于 Windows 系统,在查看里面勾选隐藏的项目选项。对于 macOS 系统,使用快捷键 Command + Shift + . 切换隐藏文件显示 

记录更新到Git仓库

每当完成了一个阶段的目标,想要记录下它时,就将它提交到仓库

核心操作:工作区开发--->将修改后的文件添加到暂存区--->将暂存区的文件记录到版本库

  1. 要把工作区变化, 放到暂存区中, 如下命令

    bash

    复制代码

    # (了解) 将index.html 添加到暂存区 git add index.html # 将css目录下一切添加到暂存区 git add css
  2. 如下命令, 可以一次性把所有变化文件, 放入暂存区

    注意: add 后面有个空格, 此.的意思 , 当前目录下所有变化都暂存

    bash

    复制代码

    git add .
  3. 把暂存区内容, 提交到版本库, 命令如下

    bash

    复制代码

    git commit -m '提交的内容说明'
  4. 图示:

    相当于存档了一次, 在版本库中产生一次提交记录(并生成版本号)

    本次存档, 不耽误我们在工作区(项目文件夹)下 继续编写项目

image-20230612154411204-1687173588607.png

Git日志及状态查看

  1. 查看所有提交的日志记录, 命令如下

    bash

    复制代码

    git log

    运行命令效果如下:

image-20230612212059053.png

  1. 当我们的日志越来越多, 可能想要简化查看, 可以输入如下命令

    --oneline 在一行显示简略信息

    bash

    复制代码

    git log --oneline

    运行命令效果如下:

image-20230612212137406.png

  1. 如果改的代码过多, 忘记改过哪些了, 可以运行如下命令, 查看git仓库变化,只能看未提交的所有变更的文件状态

    bash

    复制代码

    git status

    运行命令效果如下:

image-20230612212456778.png

  1. 暂存, 并再次提交产生一次版本记录

    bash

    复制代码

    git add . git commit -m '新建登录页面_和样式'
  2. 图示如下:

image-20230612154411204.png

Git版本回退

时光机,回到过去~

  1. 回退命令语法如下, 中文看情况写

    bash

    复制代码

    git reset --hard 版本号
  2. 查看版本号

    每次的版本号随机生成, 我们的肯定不一样

    bash

    复制代码

    git log --oneline

image-20230612212700778.png

  1. 尝试回退到 477321b 这次记录上

    bash

    复制代码

    git reset --hard 477321b
  2. 观察工作区,回退成功

    image-20230612212808682.png

  3. 如果想要在回到最近一次提交的记录, 发现git log看不到未来的记录了,但问题不大

    输入git reflog命令, 可以查看 git 所有的操作记录, 包括你的reset记录

    bash

    复制代码

    git reflog

    运行命令效果如下:

image-20230612212857923.png

拓展命令:

  • git bash(终端)清屏:clear
  • git bash(终端)另起一页:Ctrl + L

Git忽略文件

有的时候, 我们某些文件/文件夹, 不想让git进行跟踪管理。这种场景下, 我们需要在.git文件夹隔壁, 来个叫做 .gitignore (固定名字)的忽略文件, 并写入忽略规则,此处的文件名就是 .gitignore ,这个不是后缀。

项目文件夹结构如下:

image-20230612213354387.png

gitignore

复制代码

# .gitignore内容: password.txt 其余用法: # 忽略文件夹 css # 忽略文件夹下的某个文件 css/index.js # 忽略文件夹下某类文件 css/*.js

根目录新建password.txt, 查看 git追踪到了哪些变化

bash

复制代码

git status

运行命令效果如下:

image-20230612214049685.png

发现只新增了.gitignore , 符合规则的都被忽略掉了

Git分支

分支本质

  • 分支其实就是一个叫HEAD的指针标记,每次代码提交, 此HEAD指针都会往后移动一次, 保证指向的(并且工作区里的)都是最后一次提交。当我们敲击命令:git reset --hard a3bcab2,HEAD指针会移动,而且HEAD移动后, 会影响工作区里的代码

创建分支

  1. 创建分支命令如下

    bash

    复制代码

    # 创建分支 git branch 分支名
  2. 注意: 创建后不会自动切换分支, 我们可以运行命令查看现在这个.git版本库里所有分支

    查看当前版本库所有分支命令如下

    bash

    复制代码

    # 查看当前版本库所有分支 git branch # 绿色带*代表, 你现在所处的分支

    运行命令效果如下:

image-20230612215435954.png

  1. 手动切换到分支上

    注意: 第一次创建并切换到此分支, 这里你会发现 master 分支上的所有代码(和当前节点所有提交记录) 都被复制了过来, 在这个基础上, 接着往后开发就行

    bash

    复制代码

    # 切换分支命令 git checkout 分支名

    运行命令效果如下:

image-20230612215712754.png

  1. 图示如下:

image-20230612215806700.png

分支下开发流程

  1. 我们现在就可以在当前 reg 分支下来编写, 注册页面的逻辑代码, 例如新建 reg.html 文件, 并随便写点内容

  2. 然后暂存, 提交一次, 这次提交的记录会出现在这里, 如图

image-20220626005643763.png

  1. 所以, 以后在当前reg分支下开发, 就会在reg范围内, 每次提交产生一次版本记录, 但是不会影响到别的分支里

分支合并

  1. 我们可以把分支里写好的代码, 合并到主分支/其他分支上

  2. 首先, 切换到你要合并到的目标分支上, 这里以master主分支为例

    bash

    复制代码

    # 切换分支 git checkout master
  3. 图示如下

image-20230612220823875.png

  1. 合并命令语法

    bash

    复制代码

    # 把目标分支名下的所有记录, 合并到当前分支下 git merge 目标分支名
  2. 这里我们执行命令

    bash

    复制代码

    git merge reg
  3. 执行后效果图示

image-20220626011937230.png

分支删除

  1. 假如注册功能开发完毕, 代码已经合并到master分支上, 我们无需reg分支

  2. 命令如下

    bash

    复制代码

    git branch -d 分支名
  3. 如果你当前分支代码 还有没合并到别的分支的, 则会报错

分支合并时的冲突问题

在2个分支, 修改了同1个文件并提交过,在合并的时候, 就会产生冲突

  1. 这里模拟一次简单的冲突

    • 在 master 分支下, 修改 login.html 的某行代码, 并完成一次暂存提交

      image-20230612221800522.png

    • 切换到 reg 分支下, 也修改 login.html 的对应行代码, 并完成一次暂存提交

      image-20230612222009473.png

  2. 再切换回到master分支下, 用合并命令, 把reg分支下代码和变化合并过来

    不出意外, 就会出现冲突了

image-20230612222117265.png

  1. 发生冲突后,VSCode界面

    image-20230612222156560.png

    此时我们要进行抉择:采用当前更改、采用传入更改、全部保留

  2. 选择保留方式后,需要再次暂存提交一次

    image-20230612222444912.png

    此时结束冲突状态,变回正常状态

  3. 打印冲突合并后的日志记录

    image-20230612222705106.png

总结:当我们合并遇到冲突了,应手动解决,然后暂存,提交一次即可

补充-Git分支流程图详解

  • HEAD头指针, 它指向提交记录就会覆盖到工作区和暂存区,每次提交会产生新的记录, master和HEAD会后移

image-20230612224348269.png

  • 看好当前分支和记录, 以此节点为基准创建新的分支(包含之前的所有提交记录),git branch reg 就会创建一个指针标记标识 reg 名字指向

image-20230612224959233.png

  • git checkout reg切换的是HEAD指针指向(切换分支)

image-20230612225147670.png

  • 注册页面新建后,git add .添加到暂存区,git commit -m 产生了一次提交记录

image-20230612225547703.png

  • 注册页面的样式新建后暂存提交,产生了一次提交记录

image-20230613003559070.png

  • 合并分支(提交记录)

    • 目标: 你要把 A 合并到 B上。例如: 把 reg 合并到 master 上
    • git checkout B,切换到目标分支后
    • git merge A,把 A 分支记录合并到所在 B 分支下

    先切换到主分支 git checkout master

image-20230613004008281.png

  • 合并 reg 分支 git merge reg

image-20230613004234355.png

  • 小明-修改了index.html文件,在reg分支下,并暂存提交,产生了记录

image-20230613004635286.png

  • 小明-修改了index.html文件(同一个文件),在 master 分支下, 并暂存提交, 产生了记录

image-20230613010644386.png

  • 把 reg 合并过来,改了同一个文件报错,需要解决

image-20230613010950109.png

  • 手动解决冲突后, 会产生一个新的提交记录

image-20230613011347885.png

  • 删除 reg 分支 全部过程结束

image-20230613011445775.png

Git远程仓库

介绍

远程仓库是指托管在因特网或其他网络中的你的项目的版本库,可以存储我们版本库的所有记录和存档记录。支持多人协作,共同管理远程仓库,这样当我们电脑坏了,我们也可以从远程仓库上,克隆下来一份之前提交的代码到本地继续开发

image-20230615093344985.png

主流的远程仓库有 GitHub (gay hub)全球最大的同行交友社区,以及服务器在国内的 gitee(码云)。由于 GitHub 服务器在国外,需要科学上网或者使用其他加速工具,方便起见,这里以码云为例,供初学者参考,GitHub 流程与 gitee 类似

注册

注册登录 gitee.com 网站以后,添加主邮箱为自己本地 git 仓库设置的邮箱,注意一定要相同,否则无法正确提交。如果忘记了本地设置的邮箱地址,可以打开控制台输入 git config --list 重新查看邮箱地址,当然也可以使用 git config --global user.email 你的邮箱地址重新覆盖原来的邮箱地址

邮箱设置界面不要勾选不公开我的邮箱地址,否则也无法正常提交

image-20230615094323926.png

仓库新建

可以选择创建一个远程仓库的项目 (可以多个),创建界面如下

image-20230615095044748.png

勾选完成后选择创建,创建后, 会得到一个远程仓库的地址链接, 一般是以.git结尾的地址。

地址分为两种最常用的两种传输协议:

选择SSH路径,界面如下

image-20230615095628604.png

SSH配置

我们可以在本机一次性配置 SSH 以后免密登录

  • ssh秘钥组成和作用

    text

    复制代码

    ssh key 的作用:实现本地仓库和 gitee平台之间免登录的加密数据传输 ssh key 由两部分组成,分别是: id_rsa(私钥文件,存放于客户端的电脑中即可) id_rsa.pub(公钥文件,需要配置到 gitee平台 中) 私钥加密的信息,只能通过公钥解密。公钥加密的信息,只能通过私钥解密。安全性高!

创建与使用步骤:

  • 先在本机生成一个秘钥 (以后也可以重新生成, 重新配置),随便打开一个终端,输入以下命令:

    bash

    复制代码

    ssh-keygen -t rsa -C "你注册账号的邮箱"
  • 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件

  • 使用 vscode 打开 id_rsa.pub 文件,复制里面的文本内容

  • 粘贴配置到 码云 -> 设置 -> ssh 公钥 中即可

  • 如果为 mac ,可进入以下教程查看:mac获取公钥

初始化空仓库

先给本地仓库配置个远程仓库的地址, 建立仓库之间的链接

由于每次 push 操作都需要带上远程仓库的地址,十分麻烦,我们可以给仓库设置一个别名

bash

复制代码

# 给远程仓库设置一个别名 git remote add 仓库别名 仓库地址 git remote add origin [email protected]:(username)/repository.git # 删除 origin 这个别名 git remote remove origin # 使用 -u 记录 push 到远端分支的默认值,将来直接 git push 即可 git push -u 仓库别名 分支名

image-20230615101817727.png

下面为实际操作举例:

  • 随便新建一个项目文件夹,初始化 git,随后在项目文件中随便填充点内容,这里我新增一个.gitignore文件,随后暂存提交到本地 git 库

    image-20230615103357225.png

  • 输入以下命令:

    bash

    复制代码

    # 注意:这里的existing_git_repo是你的项目根路径 cd existing_git_repo #如果你是在项目文件夹开启的终端,忽略此行 # 添加远程仓库关联,仓库别名origin,可以随意更改,后接ssh地址 # 此处的ssh是自动生成的,可以去gitee空仓库的代码页直接复制即可 git remote add origin [email protected]:li-houyi/test-factory.git # 第一次推送到远程时需要指定具体的分支,因为远程仓库并没有这个分支 # 使用 -u 记录 push 到远端分支的默认值,将来直接 git push 即可 git push -u origin "master"
  • 出现此页面即为成功:

    image-20230615104040319.png

    注意:推送的本地仓库一定要非空并且本地暂存提交过,不然会报错!这点也很好理解,你传个空的项目到一个空仓库,这可不得给你报错吗

  • 推送成功后重新进入 gitee 仓库页面查看是否正确推送

    image-20230615105531979.png

  • 空仓库创建成功后可以在管理页面将仓库开源,当然也可以不设置开源(默认私有)

本机无项目-克隆

如果你本地没有项目,而且如果你是要拿到别人仓库或自己仓库里的代码,要进行项目克隆

  • 命令如下:

    bash

    复制代码

    git clone 目标远程仓库的git地址
  • 过程如下:

image-20230615110423501.png

  • 如果项目只有一个分支,那么以上代码执行完毕就已经克隆结束了(git clone 默认拉取 master 分支),不过实际开发中,并非只有一个分支,于是我们还需执行以下步骤:

    • 在本地建分支,分支名与远程分支名相同,查看远程分支名使用git branch -r
    bash

    复制代码

    git checkout -b 对应远程分支名
    • 拉取远程分支 (不要在 master 分支直接拉取对应分支的代码,切换到新建的分支)
    bash

    复制代码

    # 每次拉取都需要指定远程仓库名和分支名 git pull 远程仓库名 分支名
    • 注意: 以上 2 行命令可以合并写做一行
    bash

    复制代码

    git checkout -b 分支名 origin/分支名
    • 拓展: 设置 git pull 默认拉取的分支
    bash

    复制代码

    git branch --set-upstream-to=origin/远程分支名 本地分支名

多人协同开发

  • A编写代码, 暂存, 提交, 然后推送到远程服务器
  • B编写代码, 暂存, 提交, 可以先拉取对方刚提交的记录到本地合并, 然后合并后无误再推送到远程
  • A可以 git pull 拉取远程最新的代码版本到本地合并使用

这里的A和B谁先都可以, 继续拉取更新的代码,用 git pull 命令即可

Git远程仓库流程回顾

  • Step1:

image-20230616072225869.png

  • Step2:

image-20230616072307518.png

  • Step3:

image-20230616072523621.png

  • Step4:

image-20230616072547086.png

Git常用命令总览

image-20230620223216096.png

作者:耀南.
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/YN2000609/article/details/131919082
今日推荐