git分支操作、远程仓库、协同开发冲突解决

git分支操作、远程仓库、协同开发冲突解决

复习

# 互联网项目:主站(互联网用户看的)--》前后端发呢里,后台管理(RBAC)---》混和(simpleui),前后端分离(django-vue-admin)
# 后台管理---》simpleui---》基于admin,美化了界面
	-安装---》在app中注册---》第一个位置
	-二次开发:左侧侧边栏可以通过配置文件定制---》原来有地址(只要在admin中注册)
    -写自己的:直接配置好路由即可(混合开发)
    -给页面增加按钮--->admin的类中即可
    -监控大屏(html,css,js)
    
# git介绍:版本管理软件
	-协同开发
    -版本进行管理
# git 和 svn
	-分布式管理:远端服务挂掉了,本地也可以管理代码
    -集中式管理:远端服务挂掉了,就不能进行版本管理了
# git ,github,gitee,gitlab

# 安装---》一路下一步

# 使用:记住的-->工作区---》暂存区---》版本库
	-git init 
    -git add .
    -git commi -m '注释'
    -git status
    -git log     # 内容多
    -git reflog  # 更全,简洁
    
    -git checkout .  # 工作区回退 --->工作区修改了代码(新增的文件不管)
    -git reset HEAD . # 把绿变红(从暂存区拉回到工作区)
    -git reset --hard 版本号  # 把工作区的内容,切换到某个版本上
    
    
    
 # 忽略(过滤)
	-仓库中有一些文件不想被版本管理,不想提交到远端
    -仓库根路径新建.gitignore
    -写入规则
    	/文件夹名字
        s1.py 
        *.py
        .idea
        *.pyc
        __pycache__
        

1 git分支操作

# 1 创建分支
git branch dev
# 2 查看分支(本地)
 git branch
 # * master   目前只有master分支,当前在哪个分支
# 3 切换分支
git checkout dev

# 4 创建并切换
git checkout -b 分支名
# 5 删除分支
git branch -d 分支名

# 6 查看远程分支

# 7 合并分支
 git merge dev # 目前在master上,把dev合并到master
    
    
 # 练习
  105  git branch dev
  106  git checkout master
  107  git branch
  108  git checkout bug
  109  git status
  110  git add .
  111  git commit -m '修复了bug,新增了bug.txt,在xx.txt中新增了一行'
  112  git checkout master
  113  git merge bug
  114  git checkout dev
  115  git status
  116  git add .
  117  git commit -m 'dev分支:sss.txt新增了一行'
  118  git status
  119  git checkout master
  120  git merge dev
  121  git branch

2 远程仓库

2.1 仓库创建者---》代码是我提交的

# github,gitee,gitlab

##### 操作步骤
#1 注册gitee账号
	-部分公司的代码,是托管在gitee上的
#2  创建一个远程仓库
	-后端项目和前端项目放到两个仓库

#3 本地仓库,提交到远端(需要保证,远程仓库是空的)
	-3.1设置账号和邮箱
    	git config --global user.name "zhangshihu"
        git config --global user.email "1617271856@qq.com"
     -3.2本地没有仓库
 
        mkdir luffy_back
        cd luffy_back
        git init 
        touch README.md  
        git add README.md
        git commit -m "first commit"
        git remote add origin https://gitee.com/zhangshihutop/luffy.git
        git push  origin master
        
     -3.2本地有仓库
       # 进入项目的目录
    	cd xxx
        # 添加远程仓库,git remote add ,origin:起了个名字,地址是:https://gitee.com/liuqingzheng/luffy_back.git
        # 以后origin就代指这个地址
        git remote add origin https://gitee.com/zhangshihutop/luffy.git
        # 把本地的master提交到origin地址
        git push  origin master
        # 输入 gitee的账号和密码(一旦输入过一次,会在操作系统上记录下,以后不用输入了,凭据管理)

2.2 普通开发者--->仓库已经建好了

# 仓库已经存在了---》基于仓库继续开发
# git clone  https://gitee.com/zhangshihutop/luffy.git    你领导发给的 直接克隆到本地
# 使用pycharm打开,继续开发即可
	git add . 
    git commit -m '提交'
    # git remote 查看远程仓库
    git push origin master  # 克隆下来的自动匹配上
    

3 ssh协议连接远程源

# 公司里常用的
	-只需要配置好公钥,私钥,以后不需要使用用户名密码了
    
    
# 生成公钥,私钥
	ssh-keygen -t ed25519 -C "1617271856@qq.com"
    id_ed25519.pub 公钥
    id_ed25519 私钥
# 生成后,把公钥配置在远程仓库
	-我的(头像)--->设置---》ssh公钥---》配置上刚刚生成的公钥
    -表示我这台机器,不需要输入用户名密码就可以操作我的gitee账号了(提交,拉取代码)
    -现在删掉凭据,再提交代码,还需要输入用户名密码?
    	-git remote add origin https://gitee.com/zhangshihutop/luffy.git
            
     -git remote  查看远程仓库
     -git remote remove origin  # 删除origin这个远程仓库
# 重新配置远程仓库
	git remote add origin git@gitee.com:zhangshihutop/luffy.git
     # 修改代码
    git add .
    git commit -m ''
    git push origin master  # 第一次输入yes,以后都不用了,因为已经配好ssh了

4 协同开发

# 多个人同时开发一个项目,既要做好版本的管理,又要做好代码的合并

"""
1)作为开发者,第一次同步项目(前台已经是项目开发者了)
>: git clone 项目地址

2)本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互

4)交互顺序:必须 先拉(pull)后提(push) 时不时pull一下

5)必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互
>: git checkout dev
>: git add .
>: git commit -m '本次提交的信息提示'
>: git pull origin dev  拉代码
>: git push origin dev  上传代码
"""

git分支操作、远程仓库、协同开发冲突解决

5 冲突解决

# 分支合并
# 协同开发,共同操作同一个分支
# 你们刚到公司,可能只给你访问权限---》只能看,不能提交




# 多个人再同一个分支上开发---》出的冲突
<<<<<<< HEAD     # 你的代码
print('迪迦')
=======          # 远端别人的代码
print('泰罗')
>>>>>>> 363ecd639982a9c539c7280bd37e68d2822911ff

# 肯定是改了共同的代码才出的冲突--->保留某个人或者两个都保留
git add .
git commit -m
git push origin master


###### 分支合并冲突

git branch dev  创建分支dev
git branch bug  创建分支bug
git checkout bug 切换分支
# 修改代码(bug分支)
git add .
git commit -m '注释'
# 切换回主
git checkout master
# 合并(现在没有问题,合并成)
git merge bug  
# 切到dev分支
git checkout dev
# 改同一行代码
git add .
git commit -m '注释'
# 切换回主
git checkout master
# 合并(现在有冲突)--->解决冲突 看具体是改错了 还是改重复了 留下有用的
git merge dev  
git add . 
git commit -m '注释'

git分支操作、远程仓库、协同开发冲突解决

6 线上分支合并

# 远端:master和dev分支

# 本地:master和dev分支

# 我们都在dev分支开发---》本地的dev---》开发完了提交到远端的dev----》要把远端的dev合并到远端的master

# 提交pr(pull request),提交合并分支请求  ####


# 远端建立一个dev分支
# 本地只需要
git checkout dev # 自动把远端dev拉下来,切换到本地dev上
# 再本地dev开发,提交到远端dev
# 修改代码
git add .
git commit -m 'dev改了'
# 提交到远端dev
git push origin dev # 把现在在的本地分支(dev),提交到远端的dev

面试常问问题

# 你知道git rebase (git 变基)
	-我知道,但我们用的merge的普通合并   git log 所有日志记录
    -变基 只看到合并的那条   是否显示之前分支的版本记录 不想显示就用它  会简洁一些
    
# 你知道git flow吗?
	-知道,但是我们没用
    -我们用的就是master,dev,bug分支模型
上一篇:Spring Boot(十四):Spring Boot集成jsp


下一篇:Git快速使用