Loading

git工作流程、git常用命令、git 过滤文件、git多分支开发、git远程仓库、ssh链接远程仓库,协同开发、冲突解决、线上分支合并

git工作流程

未命名文件 (1)

# 有三个区
	-工作区:代码,文件存放的位置,新增,修改,删除文件,代码
    -暂存区:把工作区的更改提交到暂存区
    -版本库:把暂存区的数据,提交到版本库
    
    
# 工作流程
	-在工作区修改代码,提交到暂存区,暂存区再提交到版本库,代码才被版本管理,可以回退
    -各个区域可以相互操作,但工作区不能直接提交到版本库

git常用命令

创建文件夹

初始化仓库

出现 .git 隐藏文件夹

git init 仓库名  # 在当前文件夹再创建一个文件夹作为仓库
git init        #当前文件夹就是仓库,就会被管理

查看当前仓库状态

只要有红色,说明工作区更改了,但是没有提交到暂存区

git status(重点)

把工作区变更提交到暂存区

提交到暂存区后,再次执行 git status

会变绿色--->暂存区的代码``没有提交到版本库

git add . (重点)  # .表示当前路径下所有更改,如果你只想提交某个文件 

把暂存区所有内容提交到版本库

发现提交不了,需要设置用户(看下条)

提交之后再使用git status --->没有颜色

git commit -m '注释内容'


'注释必须写, 写的越详细越好!!!'
'注释必须写, 写的越详细越好!!!'
'注释必须写, 写的越详细越好!!!'

设置用户

设置全局用户---》所有仓库都用这个用户---》用户家路径C:\Users\用户名\.gitconfig中写入了

  git config --global user.email "邮箱地址"
  git config --global user.name "名字"
  # 设置局部用户---》当前仓库---》在.git文件夹下
  git config  user.email "3@qq.com"
  git config  user.name "tom"

查看版本管理信息

git log    --》显示谁在什么时间提交的,版本号是多少
git reflog ---》简略显示版本信息

把工作区回退到某个版本

git reset  --hard  版本号(重点)

由绿变红(把暂存区拉回到工作区)

git reset HEAD (一般不做)

把当前工作区的更改(不包含新增,包含修改和删除),回退回去

git checkout .

git 过滤文件

# 在仓库目录下,新建一个 .gitignore  文件,文件中写 目录或者文件或者模糊匹配---》它可以完成对这些文件的忽略
# 项目的日志文件,生成的编译文件,前端项目的node_models文件夹都不需要被版本管理
# 写忽略文件可以完成这个事

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

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


## git 不管理空文件夹,文件夹下有文件,才会被管理

git多分支开发

什么是多分支

​ git分支的概念 可以认为分支就是当前工作目录中代码的一份副本。 使用分支,可以让我们从开发主线上分离出来,以免影响开发主线

分支操作

创建分支

git branch 分支名

切换分支

git checkout dev

查看分支

git  branch

删除分支

git branch -d 分支名字

合并分支

git merge dev  # 切换到要合并进的分支(master) ,把dev合并到master上

补充

# 不同分支的操作,是相互独立的


# 分支合并可能会出冲突


# 面试题:你们公司git是如何分支,如何分支管理的
	-我们公司,项目不大,基本就用三条分支 master主分支,dev开发分支,bug分支
    -我们在dev分支上协同开发,如果出现bug,从主分支现拉出bug分支修改,修改后合并进主分支

image-20220707113507348

git远程仓库

# 上面都是在本地操作,做代码管理,咱们需要协同开发,把多人的代码合并到一起,需要有一个远程仓库,搭建都把代码提交到远程仓库,远程仓库帮我们做合并
# github,gitee,gitlab 都是远程仓库
#  创建完远程仓库后,我们的操作
	-本地没有代码
    	git init
        git add .
        git commit -m 'sss'
        git remote add origin https://gitee.com/liuqingzheng/luffyapi.git
        git push origin master
    -本地有代码(luffyapi写了一部分功能了)
    	git remote   #查看有哪些远程仓库
        git  remote remove 名字 # 删除远程仓库的关联
    	# 创建一个远程仓库的关联
    	git remote add origin https://gitee.com/liuqingzheng/luffyapi.git
         # 把本地代码提交到远程仓库  把本地master分支提交到远端的origin上
        # 输入gitee的用户名密码
	    git push origin master

image-20220707120440375

image-20220707120723178

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

https的链接方式:输入用户名和密码,输入一次就被保存了

ssh的链接,不需要用户名密码,需要公钥和私钥

第一步:生成地址参照地址

https://gitee.com/help/articles/4181#article-header0

第二步:在命令中执行

ssh-keygen -t rsa -C "306334678@qq.com"

第三步:会在当前路径下生成公钥私钥

/c/Users/用户名/.ssh/
'''
id_rsa  :私钥  不能泄露
id_rsa.pub:公钥 可以给别人,配置到git远程仓库
'''

第四步:公钥配置到gitee账户上

个人设置里

第五步:以后就不需要使用用户名密码,就可以直接操作gitee了,走的是ssh链接,而不是https链接

第六步:删除原来配置的https的origin

git remote remove origin

第七步:加入ssh的origin

git remote add origin git@gitee.com:liuqingzheng/luffyapi.git
# 注意,在公司里,在设置用户邮箱和名字的时候,要设置自己真正的邮箱(注册gitee,gitlab的邮箱)

协同开发

# 步骤
	-第一步:你到公司(gitee,gitlab),注册账号
    -第二步:把你的公钥配置在你的gitee,gitlab账号上
    -第三步:把你的邮箱发给项目的管理者(你老大)
    -第四步:他把你账号添加为开发者---》你就可以读写项目了
    -第五步:你要把公司项目拉到本地
    	-方式一:直接下载zip
        -方式二:在命令行中执行
        git clone git@gitee.com:liuqingzheng/luffyapi.git
    -第六步:改代码,提交 (ssh,https提交)
    	git add .
        git commit -m '注释'
        #在提交之前一定要拉一下代码
        git pull origin master  # 可能会有冲突
        git push origin master
            
            
            
            
 # 冲突出现的原因:
	-分支合并
    -多人在同一分支开发

冲突解决

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

image-20220707160911007

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


# 冲突出现的样子
print('lqz')
<<<<<<< HEAD
=======
print('sss')
>>>>>>> 732f1921741fa4d6153d1c4b7eb0302a509838d9

先把冲突的地方删除,剩下的代码分析,需要留哪些,到底是留我的代码,还是留同事的代码(删同事的,跟同事说一声),如果删自己的,不用说

分支合并出现冲突

操作流程(制造合并分支冲突现象)
# dev
	git branch dev
    git checkout dev
    在代码中增加一行
    git add .
    git commit -m '提交了'
    
# master
    git checkout master  #加的一行看不到
    在代码中增加同一行
    git add .
    git commit -m '提交了'
    
# 解决冲突
    # 把dev合并到master中
    git merge dev  #冲突了
    #解决冲突
    git add .
    git commit -m '提交了'

image-20220707161257275

线上分支合并

######### 每次提交代码之前都要先拉一下######

'线上分支合并在公司里叫提交 pr'
# 操作步骤
	在远端新建dev分支
    在本地新建dev分支,切换到dev分支
    执行git pull origin dev  #把远端的dev拉倒本地的dev
    修改代码
    git add .
    git commit -m '注释'
    git pull origin dev # 先拉
    git push origin dev  # 把本地当前在分支(dev)推到远端dev
    远端的master和dev代码就不一样了
    远端合并代码
    提交pr
    你领导审核,审核过后,通过,就合并了

image-20220707162444293

image-20220707162601241

posted @ 2022-07-09 20:03  香菜根  阅读(47)  评论(0编辑  收藏  举报