0


Git 『流程 | 基本命令 | 分支 | 推送与拉取』

文章目录

1. Git简介

Git 是一个 分布式的版本控制工具,其应用场景如下:
在这里插入图片描述
结构如下:
在这里插入图片描述

2. 下载并安装Git

  1. 首先下载Git并安装,安装完后,右击鼠标会有:在这里插入图片描述
  2. 创建git仓库:进入想要的文件夹打开 cmd 或 Git Bash Here,用以下命令将文件夹改造为git仓库-- 当前文件夹变为git空间git init在这里插入图片描述> > - 可以创建无数个git仓库,一般一个工程项目对应以一个git仓库。
  3. 在git仓库中,查看用户名和邮箱-- 参数l是list的缩写git config -l在这里插入图片描述
  4. 修改用户名和邮箱git config --global user.name 用户名git config --global user.email 邮箱

3. 跟踪

  • 第一次创建git仓库后,该仓库内的所有文件都是未被跟踪的。仓库内的文件 只有被提交到缓冲区,该文件才会被 跟踪,只有被跟踪,文件发生变化时才能被检查到。-- 文件放入缓冲区git add 文件名或目录 // 放入当个文件git add.// 放入当前目录下的所有文件-- 删除跟踪git rm 文件名或目录名
  • 设置不跟踪哪些文件:1. 在仓库所在目录创建.gitignore文件在这里插入图片描述2. 在.gitignore文件中写不跟踪的文件名(可以用正则匹配)在这里插入图片描述

4. Git流程

在这里插入图片描述

  1. 修改后的文件,使用add命令提交到 缓冲区-- 放入缓冲区git add 文件名 // 添加当个文件git add 文件名1 文件名2 文件名3// 添加多个文件git add.// 放入当前目录下的所有文件-- 取消缓冲区的文件git reset head 缓冲区的文件或目录名
  2. 再使用commit命令将 缓冲区数据 提交到 本地仓库-- 提交git commit-m 此次提交顺带的评论 // 可以用单引号,也可以不用单引号git tag commitID别名 // 提交之后可以为刚刚提交生成的commitID取别名 -- 回退到之前或之后的某个版本git reset --hard 上次提交生成的commitID // 通过 git log 命令查看> 注意:> > > 1. 第一次提交不能取消,第二、三…次都可以取消。> 2. 可以使用tag命令为生成的commitID取别名,因为commitID是一组hash值,不太方便直观展示其意义。在这里插入图片描述> 3. 每次commit生成新版本时,当前分支都会随着新版本移动在这里插入图片描述
  3. 将本地仓库代码提交到远程仓库在这里插入图片描述

5. 基本指令

5.1 查看仓库的状态

git status

5.2 查看所有版本

在这里插入图片描述

  • 当不小心删除了版本记录,可以使用git reflog去查看记录,得到之前的版本ID在这里插入图片描述

5.3 查看不同版本之间有哪些不同

  1. 先使用git log查看所有版本信息,复制要比较的版本ID
  2. 命令:git diff 版本ID1 版本ID2

5.4 版本回退

  1. 先使用git log查看所有版本信息,复制要进入的版本ID
  2. 命令:git reset --hard 版本ID在这里插入图片描述

6. 分支

在这里插入图片描述

6.1 分支相关命令

  1. 查看所有分支git branch // 只显示本地仓库的分支git branch -a // 显示本地仓库的分支、以及远程仓库的分支git branch -a -v // 显示本地仓库的分支、以及远程仓库的分支;以及对应的commitID、commit评论git branch -a -vv // 显示本地仓库的分支、以及远程仓库的分支;以及对应的commitID、本地分支与远程的哪个分支绑定、commit评论在这里插入图片描述> > - 这个命令只是用来查看有哪些分支,对于哪些分支分别提交了几次,还是要使用上面的git log --all --pretty=onelone --abbrev-commit --graph在这里插入图片描述在 Git 中 HEAD 表示 当前分支
  2. 创建分支-- 1. 创建git仓库时,会自动创建一个名为 master 的分支-- 2. 若在master 分支的基础上还想创建新分支,使用 branch 命令git branch 分支名
  3. 删除分支git branch -d 分支名git branch -D 分支名 // 大D是强制删除分支。比如:一个分支发生了修改,但是还未合并到其它分支,此时使用小d删除该分支会失败。
  4. 切换分支git checkout 分支名 // 若分支名不存在,则切换失败git checkout -b 分支名 // 若分支名不存在,则创建该分支,并切换到该分支
  5. 分支合并1. 使用 merge:将两条分支的末尾连接起来,本质是将两个节点合并// 将分支2合并到分支1上-- 1. 首先切换到一个被合并的分支1上git branch 分支1-- 2. 再将分支2合并到分支1上git merge 分支2在这里插入图片描述2. 使用 rebase:将两条分支合并为一条分支 【git rebase详解(图解+最简单示例,一次就懂)】// 将分支2合并到分支1上-- 1. 首先切换到一个被合并的分支1上git branch 分支1-- 2. 再将分支2合并到分支1上git rebase 分支2在这里插入图片描述> > - 两者对比:在这里插入图片描述> - 应用场景对比: 1. 当新功能要合并到master,但是后续可能会修改,此时用 merge2. 当新功能要合并到master,且以成熟后续不会再更改,此时用 rebase
  6. 分支合并时引发冲突:因为分支之间是独立的,所以可能两个分支同时修改了某一行,此时将两者合并时,git就不知道该行该设置为什么值。解决方法如下1. 将一个分支合并到另一个分支上,没有提示冲突就说明没有冲突;如果提示了以下信息就说明发生了冲突:在这里插入图片描述2. 打开冲突文件,使用=====定位到发生冲突的行在这里插入图片描述3. 想修改为多少,就写多少,将其余代码删除在这里插入图片描述4. 将修改后的冲突文件提交到缓冲区:git add file01.txt5. 再生成新版本:git commit -m 'new'

6.2 开发中分支使用原则

在这里插入图片描述

视频连接:https://www.bilibili.com/video/BV1MU4y1Y7h5/?p=11&spm_id_from=pageDriver&vd_source=5534adbd427e3b01c725714cd93961af

7. 远程仓库 <—> 本地仓库

(1) 设置密钥

  1. 本地电脑生成密钥ssh-keygen -t rsa然后一路回车
  2. 复制密钥cat ~/.ssh/id_rsa.pub 然后复制密钥
  3. 将密钥粘贴在GitHub、Git、等远程仓库的ssh配置中在这里插入图片描述

(2) 远程仓库 --> 本地仓库

场景一:拉取整个项目
  1. 从远程仓库复制URL地址在这里插入图片描述
  2. 进入到待保存数据的文件夹,使用clone命令拉取项目在这里插入图片描述
场景二:只将远程仓库更新的分支抓取到本地

(3) 本地仓库—>远程仓库

  1. 从远程仓库复制URL地址在这里插入图片描述
  2. 与远程仓库建立连接在这里插入图片描述
  3. 查看远程仓库是否连接成功在这里插入图片描述
  4. 把本地仓库项目推给远程仓库1. 直接提交此次项目:在这里插入图片描述- 参数:① -f表示强制覆盖,当本地仓库和远程仓库都修改了同一行时就会冲突。(一般情况下是不会冲突,所以可以不使用该参数)    ② --set-upstream表示将该命令中的本地分支名和远端分支名自动绑定。这样后续再推送时,就很方便。 > 1. 例子:在这里插入图片描述 因为已经绑定了,所以直接push,不用再指定一些参数在这里插入图片描述> 2. 查看已经绑定的分支: git branch -vv在这里插入图片描述- 注意:若远程分支名 和 本地分支名相同,则可以只写一个。比如:git push origin master:master// 可以简写为:git push origin master2. 用此次项目替代上一次的项目,即commitID还是上次的,但是项目是此次的:在这里插入图片描述
常见问题:版本冲突

在这里插入图片描述
解决方法:就和之前解决分支冲突的方法一样。(远程拉取的分支也是分支,所以解决方法一样)

8. 指令大全

在这里插入图片描述

9. 经典问题

  • 问题:从远程仓库拉取项目之后,使用git branch查看分支,没有一个分支,连master分支都没有。解决方法:
  • 解决方法:将拉去到的项目再提交,并与远程仓库建立连接,然后从远程仓库fetch数据在这里插入图片描述

10. 例子:工作中指令使用

// 1. 查看状态
git status

// 2. 添加文件
git add 文件1 文件2 文件3// 3. 从远程仓库拉取数据
git pull

// 4. 提交到本地仓库
git commit -m "icafe编号 需求标题"// 5. 提交到远程仓库
git push origin HEAD:refs/for/master
标签: git github

本文转载自: https://blog.csdn.net/qq_43546676/article/details/129929599
版权归原作者 ElegantCodingWH 所有, 如有侵权,请联系我们删除。

“Git 『流程 | 基本命令 | 分支 | 推送与拉取』”的评论:

还没有评论