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常用的命令和操作
幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。

















浙公网安备 33010602011771号