我的项目day03:git的工作流程,git的常用指令,git过滤文件,git多分支开发,git远程仓库,上传项目,ssh链接远程仓库,协同开发,冲突解决,线上分支合并(pr, mr),git面试

6 篇文章 0 订阅
6 篇文章 0 订阅

一:git的工作流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FUPJdTMf-1668427274618)(C:\Users\Administrator\Desktop\学期笔记库\luffyday04.assets\微信截图_20221109163622.png)]

1.工作流程
  • 1.只要是被git管理了,且文件一旦发生了变化(增删改),git status可以看到文件变红色了
  • 2.工作区的变更,要提交到暂存区,变绿色
  • 3.暂存区提交到版本库,才会被版本管理,一旦被版本管理,后期可以回退到指定的版本
  • 4.版本库的内容可以提交到远程仓库
  • 5.本地也可以拉取远程仓库中的代码
  • 6.本地代码也可以提交到远程仓库
2.注意点
  • 只有被版本库控制的代码,开能被监听,所以可以回滚到任何一个指定的版本

二:git的常用指令

1.基本指令

初始化仓库:git init

查看状态:git status

配置用户信息(局部没有,优先使用全局)

git config user.name 'xxx'
git config user.email 'xxx@qq.com'
git config --global user.name 'xxx'
git congig --global user.email 'xxx@qq.com'

工作区提交到暂存区:

git add .  # 提交所有更改
git add 文件名  # 提交当前文件的更改

暂存区提交到版本库

git commit -m '注释一定要加'

查看版本情况

git log
git reflog  # 精简的查询

退回所有的更改

git checkout .

从暂存取退回到工作区

git reset DEAD

版本库回退到暂存区

git reset --soft 上一个版本号

版本库退回到工作区

git reset --版本号
git reset --mix 版本号
2.补充

git status -s 简略显示

空文件夹不会被git记录

如果删除了当前仓库的用户,就会使用系统用户

查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
回滚到指定版本:
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号 (重点)
>: eg: git reset --hard 35cb292

3.git log和git reflog之间的区别
# git log 和git reflog的区别git log 命令可以显示所有提交过的版本信息如果感觉太繁琐,可以加上参数  --pretty=oneline,只会显示版本号和提交时的备注信息git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)# git reset --hard,--mix,--soft的区别hard (硬)-> 全部删除,会彻底返回到回退前的版本状态,了无痕迹mixed (中)-> 保留工作目录,文件回退到未commit的状态soft (软)-> 保留工作目录、暂存区 ,文件会回退到未 add(未到暂存)的状态总结:soft是撤销commit的提交,但工作区未提交的更改还是保留;mixed是撤销暂存区的提交,工作区的更改同样也保留;而hard是把工作区、暂存区、commit到仓库的三个版本都回滚了

三:git过滤文件

1.忽略的原因

1.以后项目中,有些文件(.idea, [.pyc], node_modules等),不需要被版本管理,需要忽略他

2.忽略的步骤
  • 1.仓库的根目录下创建文件:.gitignore(不需要任何后缀名)
  • 2.在此文件中写入要被过滤的文件夹或文件

eg:

文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤


a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

四:git多分支开发

1.目的:
  • 通过分支,更方便的实现协同开发,便于管理版本
2.操作:
  • 查看分支:git branch
  • 创建分支: git branch dev
  • 切换分支:git checkout dev
  • 删除分支:git branch -d dev
  • 合并分支:把dev分支合并到master上,先切换到master分支上,再执行:git merge dev
  • 查看远程分支:git branch -a

五:git远程仓库

1.gitee操作

第一步:新建一个远程空仓库,只写仓库的名字即可

第二步:开源协议:GPL,Apache

  • -linux:GPL,自由使用开源的软件,修改,增加内容,可以收费,但是你的代码必须开源
  • -Kafka。。。:Apache,可以使用开源软件,但必须注明使用了

第三步:把本地代码,上传到远程仓库

  • 前提:本地有仓库,已经有版本管理了,远程有仓库,必须是空的

  • 设置用户和邮箱(邮箱最好设自己的,乱写,到时候自己提交代码的开发者可能会是别人)

  • git config --global user.name ‘liuqingzheng’

  • git config --global user.name ‘xxx@qq.com’

  • 已有仓库:

  • 新增一个远程仓库

  • git remote add origin https://gitee.com/liuqingzheng/lqz.git

  • 把代码推上去:git push origin master

六:自己的项目传到远程仓库

第一步:创建远程仓库(非空)luffy_api

第二步:把远程仓库的内容克隆到本地:git clone https://gitee.com/liuqingzheng/luffy_api.git

第三步:把我们项目的代码copy到luffy_api这个文件夹下(.git文件夹不要copy)

第四步:git add .

第五步:git commit -m ‘注释’

第六步:git push origin master

第七步:补充:养成经常从远程仓库拉取代码的好习惯:git pull origin master

七:ssh链接远程仓库,协同开发

1.https和ssh的区别
  • https:输入用户名密码,保存在凭据管理中
  • ssh: 配置公钥私钥;生成公钥私钥;把公钥放到gitee上;配好远程仓库,以后直接提交,不需要输入任何密钥的东西
2.如何配置公钥私钥

按照这个地址的操作执行即可:https://gitee.com/help/articles/4181

第一步:cmd命令行中,一路回车,会在:c:\users\用户.ssh文件夹下生成公钥和私钥

第二步:ssh-keygen -t ed25519 -C “306334678@qq.com”
-生成一个公钥,一个私钥
id_ed25519 #私钥,千万不能泄露
id_ed25519.pub #公钥,可以给任何人

第三步: -把公钥配置在gitee的配置文件中
-到此,你的机器和gitee互相上传下载代码,都不要认证了

第四步:把原来的https改成ssh:

第一步:先删除origin,对应的https的链接, git remote remove origin
第二步:查看一下,看有没有了:git remote
第三步:配置成ssh的地址:git remote add origin git@gitee.com:liuqingzheng/luffy_api.git
第四步:以后直接拉取和提交代码即可:
git pull origin master
git push origin master

八:协同开发

在公司中,仓库管理员会把你们加成项目开发者(直接添加;链接添加)

在你的仓库中,就能看到这个项目

把项目clone下来:git clone git@gitee.com:liuqingzheng/luffy_api.git

用pycharm打开,执行正常的实例化等操作

# 在公司中,都是多人共同开发同一个项目
	-1 组长本地创建出空项目,底层代码写完---》提交到远程仓库
    -2 张三,李四,王五都要共同开发这个项目
    -3 我们要把代码clone到本地
    	-pycharm中:
        -找一个位置:git bash here(cmd)
        git clone 远程地址
        使用pychrm打开
        本地能够运行起项目来(依赖没装好),数据库链接不对(本地)
        
   -4 写代码,提交到本地版本库,推到远端即可(推之前先pull一下)   
 
# 多人协同开发一个项目
	-作为项目创建者:本地搞好,远程搞好,推上去,把别人加为开发者
    -作为协同开发者:远程账号,密码---》登录进去就能看到这个项目了

九:冲突解决

1.多人在同一分支开发出现冲突

# 出现冲突的原因
	-别人跟你改了同样的代码,但是他先提交到远程仓库了
    -你要提交,提交不上,先拉取,拉取下来,因为改了同样代码,冲突
    -冲突的样子
    <<<<<<< HEAD
    print('lqz') 
    =======        # 上面是你的代码
    print('lqz is handsome')
    >>>>>>> f67f73948d175b186cd5f1319d7602fe004e285c  # 别人代码
    -修改代码到不报错
    -重新提交到本地版本库,推到远端

2.分支合并出现冲突

# 1 新建要给dev分支,切换过去
	git branch dev
    git checkout dev
    
# 2 dev分支修改dev.py 第一行,提交到版本库
	# 在第一行加入print
    git add .
    git commit -m '修改了dev.py'
# 3 修改dev分支的home/views.py 最后一行
	# 在views.py最后一行加入注释
    git add .
    git commit -m '最后一行加入注释'

# 4 切回到master分支,修改dev.py 第一行和home/views.py 最后一行,提交到版本库
	git checkout master
    # 在第一行加入print
    # 在views.py最后一行加入注释
    git add .
    git commit -m 'master修改内容'


# 5 当合并代码,会出冲突,解决,提交
	git merge dev 
    # 有冲突,解决
     git add .
    git commit -m '解决冲突'

十:线上分支合并(pr, mr)

# 之前全是线下分支操作,本地增删查改分支

# 1 远程建立分支:gitee上点击操作

# 2 把远程分支拉到本地 
	git pull origin dev # 已经拉下来了,但是还看不到,需要切换过去
    git checkout dev   # 来到了本地dev分支
    
    
# 3 本地dev分支增加代码
	git add .
    git commit -m '本地dev提交'
# 4 本地dev提交到远端
	git push origin dev
    
# 5远程分支合并:把dev合并到master
	-你提交pull request 的申请(pr,mr)---》跟你没关系了--->[合进去了,没有合进去]
    -你领导就能看到这个pr,审核通过,点合并
    -到此 dev分支就合并进master分支了

十一:git面试题

1 你们公司分支方案是什么样的?
	-master,dev,bug 三条分支
    -master主要用来发布版本,写好了某个版本的代码合并进去,不直接在master上开发
    -dev:开发分支,项目的开发者,都在dev分支上开发
    -bug:bug分支,用来修改bug,发布小版本

2 使用git开发,遇到过冲突吗?
	-遇到过
    -多人在dev分支开发,出现的冲突
    -分支合并出现的冲突
    -把代码拉下来,直接解决冲突,保留我的代码,保留同事的代码
3 你知道git 变基?
	-分支合并:dev分支合并到master分支
    -merge或rebase 合并
    -把多次提交合并成一个
    
    
4 git pull 和git fetch的区别
	-pull 和 fetch都是拉取代码
 	-pull=fetch+合并
    
5 你知道git flow吗?git 工作流,它是一个别人提出的分支方案
    我们没有用,我们用的就是master+dev+bug分支方案
6 使用git 的操作流程
	- 如果是普通开发者:git clone下来,写代码,git add ., git commit, git pull, git push
7 什么是gitee,github:pr,gitlab:mr?
	-不同叫法:提交分支合并的请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值