Git实战

Git实战

新建一个文件夹

 

 主要分4步进行操作

  • 1.进入要管理的文件夹
  • 2.初始化
  • 3.管理
  • 4.生成版本

 

新建一个html文件,当作我们项目

 

 

 

git 初始化

 

git init

 

 

 git status 检测当前文件夹下面的文件状态

 

 

 

git add 文件名  # 我需要管理哪个文件

 

 被管理的文件都会变成绿色,美被管理的文件为红色

 

git add .   # 管理当前文件夹下所有的文件

 

 现在开始让他生成版本信息

 

git commit -m  '描述信息'

第一次提交如果出现上面信息,在git的安装目录下打开bash Here 窗口

输入
git config user.email "用户邮箱"
git config user.name "用户名"

ok,此时在输入git status 检测当前文件夹下面的文件状态

 

 

 此时,你发现git status文件不显示,是因为git帮我生成了第一个版本,已经管理起来了

此时,我修改一个文件的内容

 

 然后在输入git status 

 

 因为我做了修改,git检测了文件发生了变化   此时相当于又生成了一个新的文件,我需要git add 把它添加进来

 

 此时我在通过命令 git commit -m 'v2' 来生成第二个版本

git log 查看我们提交版本日志信息 

 

小总结:

 

 

 

 

 

 

git的三大区域

工作区 暂存区  版本库

 

 

工作区分为,已管理的文件/新文件或修改的文件 (git自动检测)

通过git add 命令 把工作区的文件提交到暂存区

再通过 git commit命令把暂存区提交到版本库

 

回滚

git reset --hard   0ace9295f9f4e90b21c6691e99bc9609100691ad  # hord 后面 commit 加密后的版本号

 

 你会发现最后一次提交记录没有了

 

git reflog

 

 我们在回滚回到v2

 

 

 

 

 看图

我们看下git checkout 的作用
先修改一个文件 hello.txt

 

 git status

 

 git checkout -- hello.txt

 

 

 

 接着看,我先修改git666这个空文件

 

 在提交到暂存区

 

 git reset HEAD git666.txt

 

 回到未到未暂存的状态,就是有回到了工作区,但是还是已修改的状态

git checkout --  git666.txt

 

 我们可以通过以上这些命令在各个区域,各个状态之间来回的切换

 

初识分支

版本与版本之间   到底是拷贝  还是 增量 ? 

  • git选择了增量

 

 

C1 第一版是我们的原代码值,假设有100个文件  我们修改了其中10个文件   

C2 第二版只会保留修改后这10个文件 ,通过指针找到上一个版本未修改的源文件

 

 作用:

  • 节省空间

  • 生成版本的速度更快

 

 

 

C4 指向C3 C5也指向C3  那么C4和C5都是基于C3的代码来修改的

C4 和 C5 各开发一个小功能,等同于每个开发人员各自负责开发的模块功能,等开发完毕后,我们合并起来

最后让C4 和C5 代码合并到C6

 

紧急修复线上Bug的思路

假设第4版本开发到一半,第三个版本出现了生产Bug,那我开发一半的代码还要不要.怎么去保存???

 

 

 

当我开发第4个版本的新功能的时候,我做个一个分支去开发

面试题:你们公司线上代码出现bug是怎么解决的呢?

当c3 出现bug了,先回到c3 ,在搞一个分支c5,c5对c3原来的代码进行修复bug,bug修复完成后进行合并,线上的功能正常走了,在切回c4继续开发

 

主干线叫master

从干线  开发新功能一般叫dev

 

git branch 目前你所处在的分支

 

git branch 分支名  # 创建一个新的分支

git branch dev

 

 我在哪个版本下创建的分支,这个分支就会指向当前的版本 

 如何切换到dev这个分支

 git checkout dev 

 

 成功的从mater分支切换到dev分支,等于我们切换到了一个新得环境,我们在这里写代码不会影响到master分支

 

紧急修复线上Bug代码操作

比如说我们要开发个新功能,商城

商城开发了一半,线上版本出现了bug,我们此时是不是要切回master分支

git checkout master  # 切分支

切回之后新建一个分支,修复我得bug,假设我们就叫bug分支    

git branch bug

新建完成我们看一下

git branch

此时我们切换到bug分支

git checkout bug  

此时修改bug分支得代码 不影响master 和 dev 分支

假如我修改文件内容  等于修改我得bug  修复完了

git add
git commit -m 'C5'

此时我得master 分支得代码还没有修复 

现在是不是把bug 分支得代码合并到master分支

 

首先合并第一步 切回master 分支

git checkout master

我是希望我得bug分支给我合并到master 分支

相当于我站在master得分支把我的bug分支上得代码给拉过来

git merge bug  # 合并 bug 分支得代码
git log # 查看一下

合并完成后 bug分支还有用嘛? 

是不是要干掉 bug 分支

git branch -d bug   # 干掉 bug 分支  ,-d 就是del的意思

git branch # 查看一下

然后,现在回到 dev 分支继续开发商城项目

git checkout dev

dev 是原来从C3 分支拆分过来得,bug还没修复来,先不管,先开发完新功能

开完完毕后,假设我修改一下html文件模拟我开发完了

git status
git add .
git commit -m '商城功能开发完毕 C6'

新功能已经开发完毕,现在是不是要把新功能也合并到master分支

 

切回master分支 

 git checkout master

把dev合并到master分支

git merge dev# 合并 dev 分支得代码

看图,此时报了一个冲突

 

 

 为什么会冲突?

原来在修复bug得时候,对c3得代码做了修改,生成了c5,我们在开发商城新功能得时候是没有修复bug的
后来我希望他们进行合并,C5修复bug的代码和开发完新功能的代码可能会产生不一样的地方
所以这里就有了冲突

冲突之后会显示,看下这个文件

 

 

 git 不知道怎么解决 ,我们自己就得手动去解决冲突

 

 

 再进行提交

 

git status
git add .
git  commit -m  '解决Bug和商城合并冲突 C7' 
git log

bug 分支合并到master 为什么没有冲突?

第一点bug分支是从C3拆出去的,bug分支C5是在C3基础上修改的,它的合并是C5可能可以把C3覆盖掉的,不会产生不一样的地方

 

命令总结和工作流

 

 

 

 最简单的工作流

 

 正式代码都在我的master分支上,开发的代码都在dev分支上, C3 dev 分支稳定以后在合并到master分支上

 

 

 

github 做代码托管

 

 

1.注册github账户
2.创建一个仓库
3.把本地代码推送到github

 

进入github 创建新的仓库

 

 

 

 ok,在看这张图

 

 

 先看这个

 

 首先上面这个代码提示让我们本地先建一个文件夹 初始化 然后提交

git remote add origin git@github.com:todayWind/improved-winner.git
这句命名给我地址起别名 ,别名就叫origin

git push -u origin main  # 意思让我们把本地的代码推送到仓库

 -u 可加可不加  origin仓库的地址  master是咱们的分支

如果你本地还有个dev分支 也可以推过去,github仓库会帮你保存起来

 

在看这张图

 

 我本地有代码了,用这个就行了啊

git remote add origin git@github.com:todayWind/improved-winner.git

git push -u origin master

注意,这里你应该有可能报错了

fatal: Could not read from remote repository

解决这个问题

在本地C:\Users\你的用户名.ssh生成文件夹,里面有id_rsa和id_rsa.pub两个文件 
然后复制id_rsa.pub文件里面的内容,到https://github.com/settings/keys新建一个key

 

 

 

 配置key完成在输入 

git push -u origin master

在刷新仓库

 

 ok ,注意看我们现在只有一个master分支

 

 我本地其实有2个

 

 

git push -u origin dev

在刷新一下

 

 ok  代码上传没问题了

 

拉取代码

假设我们公司写好了代码,我现在回家继续开发我的项目

git clone  # 克隆代码

首先,找到你仓库的地址

 

 

此时,我们找个文件夹把项目代码拉取下来

 

 

 

 此时我们在查看我们的分支,只显示了一个master,其实dev只是隐藏了而已

 

 

总结

 

 以上就是git常用的命令和操作

posted @ 2022-05-15 15:08  断浪狂刀忆年少  阅读(4)  评论(0)    收藏  举报