Git

前面

视频地址
git init 初始化git仓库
初始化最直接的效果就是创建了.git这个隐藏目录(以点开头的都是隐藏目录,要用ls -la查看)
pwd 查看当前路径
ll .git/ 查看这个隐藏目录

设置签名
如果有项目级别又有系统用户级别,那么项目级别的生效,不会用用户级别

:set nu 这个指令可以显示行号,说明在vim编辑器里面

git add good.txt
git status
git rm –cached good.txt(退回去)
git status
git commit

查看历史纪录的几种不同方式

git log
git log --pretty=oneline 只查看一行日志
git log --oneline hash值 只显示一部分
git reflog 显示了我们到某一版本需要几步,能看到左右版本

前进后退历史版本操作的本质

git管理历史记录的时候有一个指针,指针的名字叫HEAD

基于所引值前进后退版本

后退
git reflog 使用git 命令进行操作的日志 包括当前步骤所在哪个版本(一个commit 产生一个版本, 指定版本回退只能回退到该commit) 以及操作的具体内容,这个能看到所有版本
版本回退后,仍然可以看到所有的版本记录 方便查看每个操作步骤所在的版本,可以根据版本号自由前进后退
git reset --hard 索引值 这样就能跳转到当前版本
cat good.txt 看一下当前版本的内容
git reflog
向前走
git reset --hard hash索引值

前进后退版本的其他方式(不常用)

使用^只能回退
git log --oneline 以一行的方式显示所有版本
git reset --hard HEAD^ 向回退一步
tail -n 3 good.txt 显示这个文件的最后3行(这个数字可以改,想看几行把数字改成几)

git log --oneline 只能显示当前所在版本和当前版本之前的版本
git reflog 能看到所有版本 当前版本,和当前之前的版本,和比当前版本新的版本都能显示,
git reset --hard HEAD^^^ 回到三个版本之前(向后退几个版本就写几个^)

git reset --hard HEAD~3 后退三个版本(后退几个版本数字上面填写几)

hard和soft以及mixed参数对比

git help 后可以加一个具体的参数,表示帮助命令,例如下面的:
git help reset 查看git的文档,这个文档是本地的文档

reset命令的三个参数对比
–soft参数 仅仅在本地库移动HEAD指针
–mixed参数 在本地库移动HEAD指针,重置缓存区
–hard参数 在本地库移动HEAD指针,重置缓存区,重置工作区

git reset --soft hash索引值 移动到制定版本
git reflog
cat good.txt
git status 命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。

永久删除文件后找回

git reset --hard HEAD 表示回退到当前版本,HEAD指向当前版本。如果你修改了一些代码,想去除,就可以用git reset --hard HEAD一次性去除。
git reflog

vim aaa.txt
新建aaa.txt 里面随便添加一些内容内容 aaa bbb
git add aaa.txt
git commit -m “new aaa.txt” aaa.txt
git status
rm aaa.txt 删除这个文件
ll 查看不到这个文件了
git status
git add aaa.txt
git status
git commit -m “delete aaa.txt” aaa.txt
git status
ll
git reflog 查看所有版本
git reset --hard hash上个版本的hash编码值 这样就回到没有删除aaa.txt的版本了
ll 又出现aaa.txt

该节总结:用切换到上一个旧版本的方法找回,删掉的文件

21添加到缓存区的删除文件找回

vim apple.txt 新建一个文件 里面随便写一些内容,然后:wq
ll 可以看到我们的这个文件
git add apple.txt 添加到缓存区
git commit -m “new apple.txt” apple.txt 添加到本地库
git reflog
有的时候我们删除的操作是
rm apple.txt
ll 查看不到了apple.txt了
git add apple.txt
git status
git reset --hard HEAD (git reseet --hard表示我们的缓存区和工作区都会被重置,都会被刷新,根据什么刷新呢,后面加上个HEAD,现在我们拿这个HEAD指针指向的版本,我觉得这个应该是当前版本,在这个版本上,这个apple.txt这个文件是存在的)
ll apple.txt文件又回来了
说来说去还是–hard这个参数的意思,它的意思是在我们本地库里面去移动指针,在暂存区里面去刷新,对我们的工作区也会刷新,暂存区和工作区都会刷新为我们指针指向的这个位置(版本),所以说我们没有提交到本地库,用这个–hard一样能找回来

22删除文件找回方式的小结

前提:删除前,文件存在时的状态提交到了本地库.操作 git reset --hard[指针位置]

  • 删除操作已经提交到了本地库: 指针位置指向历史记录
  • 删除操作尚未提交到本地库:指针位置使用 HEAD

23比较文件

ll
git status
vim apple.txt 修改文件
:set nu 把文件前面加上行号
:wq 修改其中一行信息后保存退出
git diff apple.txt 这时候文件有了修改,我们就可以使用这个命令,讲工作区的文件和暂存区的文件进行比较
里面显示中灰色代表没有变化的行,红色代表我们删除的行,绿色代表我们添加的行 ;其实我们并没有删除行,而是在行后面加了新的内容,但是对于git来说,它是以行为单位进行管理的,所以是相当于删除了原来的行,再新建了一行

git apple.txt 提交到缓存区
git diff apple.txt 再进行比较 发现没有区别
git diff HEAD apple.txt 用指针指向我们本地库的当前版本,这样我们就又看到区别了,这个时候就是和我们本地库的某一个版本就行比较
git diff HEAD^ apple.txt 和某一个历史版本进行比较,讲工作区中的文件和本地库历史记录比较

git diff 文件名

  • 将工作区中的文件和暂存区进行比较

git diff 本地库中历史版本 文件名

  • 将工作区中的文件和本地库历史记录进行比较

不带文件名比较多个文件
ll
vim good.txt 修改文件
:set nu 把文件标记上行号 第七行增加内容
:qw
git diff 因为先在我们的apple.txt的文件没有,所有显示的只是good.txt更改前后的差异
git diff HEAD 两个文件的差异都显示出来了,good.txt文件修改签后的差异 和apple.txt修改签后的差异,也就是说不指定文件名的时候,就可以比较当前工作区中的所有的文件

24分支概述

分支就是在版本控制过程中,使用多条线同时推进多个任务
master 版本库初始化好之后,本身就会有一个master分支,也可以叫做主干
feature_blue (想做一个蓝色皮肤的分支)分支喜欢用feature开头,分支开始的时候和master内容一样
feature_game (想做一个小游戏的分支)各个分支之间彼此独立,如果不做合并的话,他们互相之间是没有任何影响的,如果分支失败了,直接删掉重来就好了,对于主干没有任何影响,方便我们去试错,有些复杂的功能进行开发的时候,就需要我们进行尝试
如果分支开发好了,合并到主干上master上,这时候也就是我们版本的升级(例如1.0到2.0),(在我们合并分支后)我们主干运行的时候也有可能出现bug,出现bug的话,就需要我们及时的进行修复,我们修复bug往往会创建一个hot_fix这样一个分支(热修复,修复时服务器不停;修复时候服务器停掉,就是冷修复.我们线互联网项目基本上是24小时不停的),修复完,再合并回我们的主分支
分支合并图解
分支的好处
1.同时并行推进多个功能开发,提高开发效率
2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响.失败的分支删除重新开始即可.

25分支操作

git status 能看到我们在哪个分支上面 现在显示的是我们在master分支上
git branch -v 查看所有分支 ,并且能看到当前所在的分支
git branch 分支名 这个可以创建分支
git branch hot_fix 创建hot_fix这个分支
git branch -v 现在查看就发现有两个分支了 前面带星号* 并且名字是绿色的,代表当前所在的分支
git checkout hot_fix 切换到hot_fix 分支,名字可以用tab键补全,可以用这个切换任何分支
git branch -v 查看所有分支,也能看到当前我们所在的分支,带星号的 名字是绿色的代表我们现在所在的分支,最下面一行很长的是目录,代表当前所在分支的具体位置

分支操作代码
创建分支git branch [分支名] (想一下hot_fix分支的例子)
查看分支git branch -v
切换分支git checkout [分支名] (可以想一下主分支的例子)
合并分支1.git checkout [被合并分支名] 2.git merge [有新内容的分支]
冲突的表现<<<是当前分支的内容 , >>>是另一分支的内容
解决冲突1.编辑文件,删除特殊符号,2.把文件修改到满意的程度,保存退出 3.git add[文件名] 4.git commit -m “日志信息”;注意:此时 commit 一定不能带具体文件名

git branch -v
ll
vim apple.txt
:set nu
修改第五行内容
git add apple.txt 提交到缓存区
git commit -m “test branch hot_fix” apple.txt 提交到本地库(-m “” 写的式提交时的备注信息)
git branch -v 刚开始的时候master和hot_fix是同步的,现在hot_fix向前推进了一个版本
合并分支,我们必须站在接受修改的那个分支上

  • 第一步:切换到接受修改的分支上(被合并,增加新内容)
  • 第二部:执行merge命令
    git branch -v 现在查看我们是在hot_fix分支上,我们想把hot_fix的修改合并到master上面,这个时候我们要先切换到master上面
    git checkout master 切换到master分支上
    git branch -v 查看所有分支,并且能看到当前在哪个分支上
    git merge hot_fix 把hot_fix分支合并到master上
    cat apple.txt 这时候就能看到合并后的内容了

26解决合并分支后产生的冲突

git branch -v 现在有两个分支hot_fix分支和master分支,现在我们在master分支上,分支冲突的意思是.我们两个分支都修改同一个文件时,合并的时候就不知道是谁合并谁了,因为上一节的时候 我们的master分支是没有变的,变得值是hot_fix分支,所以合并的时候是hot_fix合并到master分支上(这是我对冲突的理解).
vim good.txt 修改master分支里面的good.txt文件
:set nu 显示文件的行号
修改第九行 加上edit by master
:wq
git add good.txt 添加到缓存区
git commit -m “test conflict” good.txt 添加到本地库
git branch -v 查看所有分支,能看到我们当前分支在master上,现在我们的master就比我们的hot_fix向前先走一步
git checkout hot_fix 切换到hot_fix分支上
vim good.txt 修改hot_fix分支里的good.txt文件
:set nu
也改第九行 加上edit by host_fix
:wq
git add good.txt 添加到暂存区
git commit -m “test conflict hot_fix” good.txt 提交到本地库
git branch -v 查看所有分支,并查看当前所在分支,当前分支在hot_fix分支上,这两个分支都做了修改,是同一个文件的同一行,有不同的内容
git merge master 把master分支上的内容合并到hot_fix分支上,合并失败 (hot_fix|MERGING) hot_fix在合并中
ll 查看文件 并没有产生新的文件,还是只有两个文件,apple.txt和good.txt
vim good.txt
:set nu
在这里插入图片描述
在这里插入图片描述
:wq 当我们把这个文件修改好后,写入退出
git status 出现下图
在这里插入图片描述
git add good.txt 提交到暂存区
git status 出现下图
在这里插入图片描述
下面有两条语句,一条是后面加文件名的(失败),一个是后面没有加文件名的(成功)
在这里插入图片描述
git status
在这里插入图片描述

27Hash算法简介

28Git版本数据管理机制

1.svn集中式管理工具:增量式的版本控制,可以看作是一组是基本文件和每个文件随时间逐步累积的差异,能够很好的节约我们服务器的存储空间
2.git的文件管理机制:快照流,保存一个快照的索引,重复的文件会有指针指向之前的文件
3.git文件管理机制细节
在这里插入图片描述
git log 可以看到所有的commit,每个commit后面会对应一个hash值

在这里插入图片描述
在这里插入图片描述

29git分支管理的本质是创建和移动指针

在这里插入图片描述
在这里插入图片描述

30GitHub账号注册

github注册链接
要先申请邮箱,最好不要用qq和163等邮箱,建议申请阿里的邮箱

31修改github账号头像

下图第一个框框是默认的头像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

32本地库和远程库交互方式回顾

在这里插入图片描述

33为了测试远程交互初始化新的本地库

cd … 返回上一层目录
mkdir huashan 创建新的目录
cd huashan/ 进入这个目录,进入目录的时候,目录后面要加斜杠
git init 初始化
vim huashanjianfa.txt 新建这个文件
写入内容 华山剑法天下第一
:wq 保存退出
git add huashanjianfa.txt 提交到缓存区
git commit -m “test github” huashanjianfa.txt 添加到本地库

34创建远程库

先登陆到我们的github上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们也可以用码云来来管理我们的代码,创建远程库,步骤都差不多

35在本地创建远程库地址别名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
git remoto -v 查看本地仓库关联的远程仓库情况
在这里插入图片描述

36推送操作

git push origin master 推送 origin表示的是推送的仓库别名 master代表推送的分支是master
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

37克隆操作

ll
cd …
mkdir huashan_lhuc 创建这个目录
cd huashan_lhuc 进入这个目录
git clone 远程库的地址
ll 查看,本地有了huashan/这个目录
cd huashan/ 进入这个目录
ll 能看到有huashanjianfa.txt这个文件,这就是从远程库中下载来的
ls -a 我们还会看到.git/ 这个隐藏目录, .git/这个目录代表不需要我们自己对本地库初始化了,它已经替我们初始化好了
git remote -v 别名也已经创建好了
在这里插入图片描述
在这里插入图片描述

38邀请令狐冲加入团队成员

在这里插入图片描述
现在令狐冲在本地已经把远程库clone好了,现在在本做修改然后提交到本地库是可以的
vim huashanjianfa.txt
在这里插入图片描述
:wq
git add huashanjianfa.txt
git commit -m “test push” huashanjianfa.txt
git push origin master 因为用的是https协议,没有用ssh,所以每次提到远程库都要登陆
在这里插入图片描述
因为现在令狐冲还不是团队成员,所以没有办法提交到远程库,必须要岳不群邀请他加入团队才可以
在这里插入图片描述
下面是邀请步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制邀请的链接后,发送给要邀请的那个人
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击接受以后就变成了我们这个团队的成员
在这里插入图片描述
在这里插入图片描述

39远程库修改的拉取

现在岳不群要拉取远程的库
在这里插入图片描述
pwd 查看我们现在 在哪个分支上
在这里插入图片描述
cd …/…/huashan 退出来进入huashan这个目录
ll
cat huashanjianfa.txt
在这里插入图片描述
远程库里是有两行内容的
在这里插入图片描述
git fetch origin master 把远程库的内容抓取过来,读操作
cat huashanjianfa.txt 内容并没有变化
在这里插入图片描述
git checkout origin/master 这样就能看到fetch下来的新内容
cat huashanjianfa.txt
在这里插入图片描述
git checkout master
cat huashanjianfa.txt
git merge origin/master 把远程的master合并到本地的master
在这里插入图片描述
cat huashanjianfa.txt 合并之后本地就有新的内容了
在这里插入图片描述
cd …/huashan_lhuc/huashan/
vim huashanjianfa.txt 修改文件
在这里插入图片描述
git commit -m “test ybuq pull” huashanjianfa.txt
git push origin master
cd …/…/huashan
在这里插入图片描述
ll
vim huashanjianfa.txt 看到的还是原来的内容
在这里插入图片描述
:q
git pull origin master 这个是只读的操作不需要登陆
cat huashanjianfa.txt 看一下文件的内容 出现心的内容了
在这里插入图片描述
当我们的操作的数据修改的比较简单的时候,不太会产生冲突的话,使用pull就可以,比较简介
如果我们为了保险,慎重起见,先用fetch抓取下来看一看,如果没有什么问题我们再合并的话, 那我们就拆开使用fetch+merge的方式.

40协同开发时冲突的解决

如果岳不群和令狐冲都是改同一个文件的同一个位置,就会发生冲突,只有先推送的那个人能推送到远程库里面,后推送的那个人就推送不上去,他必须先拉取下来,然后再推送,拉取的时候有岳不群的内容有令狐冲自己的内容,这个时候git就不能替我们做决定了,必须我们自己去决定,这个时候就是冲突,下面是冲突过程的演示
现在我们在岳不群这边,我们现在对文件做一些修改
vim huashanjianfa.txt
:set nu 把文件加上行号
在这里插入图片描述
:wq
git commit -m “edit by ybuq” huashanjianfa.txt 提交到本地库
在这里插入图片描述
git push origin master 以岳不群的身份推送上去
在这里插入图片描述
推送完成
在这里插入图片描述
推送上来了
在这里插入图片描述
在这里插入图片描述
cd …
cd huashan_lhuc/ 换成令狐冲去登陆
ll
在这里插入图片描述
cd huashan/
ll
cd huashan/
在这里插入图片描述
ll
在这里插入图片描述
vim huashanjianfa.txt
他也去改第二行
:set nu
在这里插入图片描述
:qw
git commit -m “test conflict” huashanjianfa.txt 提交到本地库,这里提交到各自的本地库是没有问题的,但是现在我们的令狐冲版本,已经比我们远程库落后一个版本了
在这里插入图片描述
在这里插入图片描述
这个时候github就不接受令狐冲的推送了,它认为发生了新的情况,而你还不知道,你必须在这个最新的情况下再做出修改才可以,接下来我们推送一下
git push origin master
在这里插入图片描述
在这里插入图片描述
git pull origin master 先拿到这个远程的修改
在这里插入图片描述
我们现在就处于这个冲突的情况
vim huashanjianfa.txt 进入这个文件里面
:set nu
在这里插入图片描述
在这里插入图片描述
git add huashanjianfa.txt 添加到暂存区
git commit -m “resolve conflict” 解决冲突后的提交,后面是不能加文件名的
git status
在这里插入图片描述
git push origin master 推送到远程,到此推送就完成了
在这里插入图片描述
到页面上确认一下
在这里插入图片描述
在这里插入图片描述

41跨团队协作操作演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以东方不败的省份gork一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cd …
ll
cd …
ll
mkdir huashan_east
cd huahsan_east/
ll
git clone 东方不败的远程地址
在这里插入图片描述
在这里插入图片描述
ls -la 克隆下来了
在这里插入图片描述
cd huashan/ 进入这个目录里面
ls -la 可以看到,本地库也已经初始化好了
在这里插入图片描述
vim huashanjianfa.txt 东方不败添加新的内容
:set nu
在这里插入图片描述
:wq
git commit -m “kuihua” huashanjianfa.txt 提交到本地库
git push origin master 做推送(好像远程库内容修改了就要登陆账号,推送到远程库中就需要登陆账号)
在这里插入图片描述
在这里插入图片描述
已经推送上来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的那些步骤是本地修改,然后推送到远程
现在我们要做Pull Request
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以隔空对话
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击Merge pull request 合并代码
在这里插入图片描述
填写日志信息,然后confirm merge 合并成功
在这里插入图片描述
在这里插入图片描述
cd …
pwd 查看当前在哪个分支上
在这里插入图片描述
cd…
cd huashan
ll
在这里插入图片描述
cat huashanjianfa.txt 这是岳不群这,还没有葵花宝典相关的内容
git pull origin master 拉取到本地,结束我们这个跨团队协作的过程
在这里插入图片描述
cat huashanjianfa.txt
在这里插入图片描述

42SSH免密登陆

cd ~ 先进入到用户的家目录
rm -r .ssh/ 把以前创建过的ssh目录删掉(没创建不用做这步)
ssh-keygen -t rsa -C 邮箱账号直接回车表示使用默认值
在这里插入图片描述
这样就生成了一个.ssh目录
cd .ssh/ 我们进入这个目录里面
ll 可以看到,里面有两个文件
cat id_rsa.pub 查看这个文件,并复制这个文件内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试一下
cd /d/workspaces/GitSpaceVideo/huashan 回到我们的工作区,作测试
在这里插入图片描述
vim huashanjianfa.txt 随便给我们这个文件做一下修改
在这里插入图片描述
git commit -m “test ssh login” huashanjianfa.txt
我们现在先不push
tig remote -v 现在我们这个push origin还是https这样的地址
在这里插入图片描述
git remote add origin_ssh ssh的地址 我们要新建一个远程地址的别名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ssh 这个别名创建好了
在这里插入图片描述
git push origin_ssh master
在这里插入图片描述
在这里插入图片描述

43Eclipse中Git插件简介

在这里插入图片描述

43到53关于Eclipse下使用git 略

54 Git工作流介绍

在这里插入图片描述
在这里插入图片描述

55分支实战说明

在这里插入图片描述

56分支实战操作

57安装CentOS7

韩顺平Linux

58安装Gitlab前的准备和介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值