luffy__ssh链接远程仓库,,协同开发__本地代码推送到远程仓库_项目创建者__协同开发演示,,冲突解决,,多人同一分支冲突解决,,线上分支合并

前节回顾

#1 git 是什么
    - 协同开发---》多人开发同一个项目,代码合并
    - 版本管理---》文件版本管理
    -软件:分布式的版本管理
    
    -svn:集中式版本管理
        必须借助于服务端,每个人用客户端
# 2 安装
    -win:一路下一步
        -右键--》git bash here--》linux命令
        -ls
        -mkdir
        -touch # 创建一个文件或修改文件的修改时间
        -cd   #切换到某个目录下
    -mac:xx.dmg ,双击安装
        -打开命令行
    -命令行中:    
        git -v #顺利看到版本,表明安装成功
        
# 3 git  github gitlab  gitee区别

# 4 git 工作流程
    -工作区:目录,仓库,对文件进行操作
    -暂存区:工作区变更提交到暂存区
        改一个功能--》改了好几个文件---》不要add 与这个功能无关的文件
    -版本库:把暂存区内容提交到版本库
    
# 5 git常用命令
    -git init  # 初始化
    -git status  # 查看仓库状态
    - 设置账号和邮箱
    git config --global user.name "liuqingzheng"
    git config --global user.email "306334678@qq.com"
    -git add 文件
    -git commit -m '注释'  # 提交到版本库---》本地的
    
    -查看日志
        git log
        git reflog
    ------------------------------------------------
    -git checkout .               # 工作区回退,
    -git reset HEAD                #暂存区回退
    -版本库拉回到暂存区:git reset --soft 上一个版本号
    -版本库拉回到工作区 git rest --mix 上一个版本号
    -本地版本回退:git rest --hard 回退的版本号
    
# 6 忽略文件
    -一个仓库中,有些文件或文件夹,不希望被版本管理
    -仓库目录下新建 .gitignore

# 7 分支操作
    -查看:git branch  # 谁是绿色在谁身上, 身上有个 *
    -创建:
        git branch 分支名 # 创建完,不会切过去
        git checkout -b 分支名
    -切换
        git checkout 分支名 
    -删除
        git branch -d 分支名
    -合并
        git merge 分支   # 把分支合并到当前分支
        
        
# 8 远程仓库
    -github,gitlab,gitee
    
    -在gitee创建账号---》新建仓库--》把本地仓库内容,提交到远端
        -空仓库
    
    -本地仓库跟远程空仓库建立链接
        -git remote add   origin https://gitee.com/liuqingzheng/lqz2.git
        -git  远端   增加  别名   地址
        
    -本地版本推导远端
        git push origin master
        git  推   地址   远端的master     把本地当前分支

 





今日内容

ssh链接远程仓库

 远程仓库命令

# git remote add   新增远程仓库

# 远程仓库命令
1)查看仓库已配置的远程源
>: git remote
>: git remote -v

2)查看remote命令帮助文档
>: git remote -h

3)删除远程源
>: git remote remove 源名
eg: git remote remove origin

4)添加远程源
>: git remote add 源名 源地址
>: git remote add orgin https://gitee.com/liuqingzheng/app01.git

5)提交代码到远程源(以后会经常用)
>: git push 源名 分支名

6)克隆远程源(以后会经常用)
>: git clone 远程源地址

7)从远程仓库拉去代码(以后会经常用)
>: git pull 源名 分支名

使用ssh链接远程仓库

# 之前咱们添加远程仓库,地址是 http开头的,使用的是http链接远程仓库
# 输入了用户名和密码---》记录在操作系统本地---》以后就不用在输入用户名密码了
    git remote add orgin https://gitee.com/liuqingzheng/app01.git
    
    
# 咱们要学习---》ssh方案---》不需要输入用户名密码了---》公钥私钥认证方式
    -本地机器 保留  私钥
    -在远程仓库配置  公钥
    -远程仓库地址,就不是http的了,而是
    git@gitee.com:liuqingzheng/lqz2.git#ssh方案,需要公钥私钥
    https://gitee.com/liuqingzheng/lqz2.git # http/https方案,用户名密码
    
    
    
#如何生成公钥私钥---》所有操作系统都支持这个操作
# https://help.gitee.com/enterprise/code-manage/%E6%9D%83%E9%99%90%E4%B8%8E%E8%AE%BE%E7%BD%AE/%E9%83%A8%E7%BD%B2%E5%85%AC%E9%92%A5%E7%AE%A1%E7%90%86/%E7%94%9F%E6%88%90%E6%88%96%E6%B7%BB%E5%8A%A0SSH%E5%85%AC%E9%92%A5#article-header0

# 操作步骤
    1 cmd/git bash here 命令窗口中执行
    ssh-keygen -t ed25519 -C "306334678@qq.com"
    2 在操作系统用户--家路径--》.ssh文件夹---》公钥私钥
        id_ed25519.pub # 公钥--》给别人
        id_ed25519 # 私钥---》自己留着
    3 去gitee配置公钥
        https://gitee.com/profile/sshkeys
        
        ssh -T git@gitee.com  # 输入yes
    4 以后可以免密操作
    
    5 增加一个远程仓库地址:指定是ssh链接
        git remote add origin git@gitee.com:liuqingzheng/lqz2.git
    
    6 把代码推送到远端
        git push origin master
    
    
    
### 以后用https还是ssh呢?
    -公司里用ssh居多
    
# 公司中你们的使用流程
    1 要么自己注册,公司给你注册好了---》账号密码和gitee地址
    2 登录到gitee上,能看到一个项目(别人创建的,但你是开发者,你能看到)
        2.1 本地生成ssh公钥和私钥--->把公钥配置在gitlab
        2.2 继续后续操作
    3 把代码拉取到本地(已经配置好了ssh公钥和私钥)
        git clone git@gitee.com:liuqingzheng/lqz2.git
    4 修改代码,加代码
    5 本地提交
    6 推送到远端
    
    
    
    
    
    
    
    
    
# 补充:加密
    -0 编码:
        base64 
        url编码和解码
    -1 摘要算法
        md5
        sha1
    -3 对称加密
        加密和解密使用同样的秘钥
        DES
        3des
        aes
    -4 非对称加密
        加密使用一个秘钥,解密使用另一个秘钥:公钥和私钥
        公钥加密---》私钥解密
        RSA
        DSA

协同开发

 本地代码推送到远程仓库--->你是项目创建者

# 多人合作开发一个项目---》luffy_api

# 本地放到远端  本地项目还没创建仓库
    -1 远程仓库是空的
    
    
    -2 远程仓库不是空(对钩可以点了)
    
    
# 远程仓库不为空的操作步骤
    -1 远端创建一个不为空的仓库
    -2 在本地拉取
    git clone git@gitee.com:liuqingzheng/luffy_api.git
    -3 在拉取的仓库中加代码(我们直接复制过来的)
    -4 写好忽略文件
    -5 git add .
    -6 git commie -m '我的第一次'
    -7 git push origin master
    
    -8 以后都开发当时拉下来这个文件夹
    
    
    
#####注意:#####
    如果某个文件或文件夹已经被版本管理了,后期再设置忽略,就无效了
    -如何让它再被忽略呢?
        -把这个文件删除后,以后就被忽略了

 







本地拉取代码--》你是项目参与者--》大概率都是这个角色

# 1 git clone 到本地---
    -有代码,项目也能运行
    -git clone git@gitee.com:liuqingzheng/luffy_api.git
# 2 使用pycharm打开项目

# 3 本地运行项目(选解释器-创建虚拟环境-根据 requirements.txt 安装依赖---本地数据库链接配置好)
    mkvirtualenv -p python38 luffy001
    pip install -r requirements.txt
# 4 开发代码,本地提交--》推到远端

协同开发演示

# 第一个人
# 1 组长,把你加成开发者
    git clone https://gitee.com/liuqingzheng/luffy_api.git
    
# 2 使用pycharm打开

# 3 git 操作
    修改 user 的app下 __init__.py,写入
    print("hello world")
    git add .
    git commit -m ''
    git push origin master
------先提交的----


# 第二个人
# 1 拉取(本地早就有)
    git clone https://gitee.com/liuqingzheng/luffy_api.git
    
# 2 使用pycharm打开

# 3 git 操作
    修改 user 的app下 __init__.py,写入
    print("lqz")
    git add .
    git commit -m ''
    git push origin master
    # 不允许提交---》跨版本了
    git pull origin master  # 拉取远端和本地保持一致
    # 我出冲突了,解决冲突
    # 再提交
    git add .
    git commit -m '处理问题'
    git push origin master

 




冲突解决

# 什么情况会出现冲突---》协同开发
-1 多人在同一分支开发出现的冲突
-2 分支合并出现冲突

 

 

 

 

 

 

 

分支合并出冲突

# 1 创建dev分支
# 2 创建bug分支
# 3 在bug分支修改 settings.py--->数据库链接  改成localhost
# 4 合并进主分支---》没有冲突

# 5 dev分支开发,新增一个xx.py 文件---》提交到版本库
# 6 settings.py--->数据库链接  改成localhost---》提交到版本库
# 7 跟主分支合并--》出冲突---》解决冲突


###冲突的样子
<<<<<<< HEAD
print('sssssl')
=======
print('lsssss')
>>>>>>> dev

 






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

 
# 张三:
    git pull origin master
    xx.py 第四行加入 print('张三')
    git add .
    git commit -m '加了张三'
    git push origin master
    
    
    
# 我
# 如果我pull,在最新的基础上,写,不会出冲突
 git pull origin master
# 我没有pull,尽管写---》写了同一个位置,pull下来就会冲突
解决冲突,重新提交
<<<<<<< HEAD
print("lqz")
=======
print('hello world')
# 不分工程分包
>>>>>>> a48c6510d7097240fa69bbea4ff0658b60768dea

线上分支合并

# 之前学过,本地分支合并
git merge 分支名

# 学习直接在线上合并分支


#####本地和线上分支同步################
#### 远程创建分支,拉取到本地####
    -远程创建分支,拉取到本地
        -点点点创建
    -在本地执行:
        git pull origin  # 拉下来,但是看不到,只有切进去才能看到
        git checkout bug
        
###### 本地创建,推送到远端#####
    -本地创建分支
        git branch dev
        git checkout dev # 切到dev分支
        git push origin dev # 把本地当前分支,推动到远端dev分支
        

        
        
### 线上分支合并
    -在本地dev分支加入xx.py 加入 一句话
    -推送到远端 dev分支
    -在远端 把dev合并进master
    
    
# 你提合并请求---》你领导审核代码---》同一---》你才合进来


    
 ####  commit 的时候,单引号和双引号有区别#####

 




pycharm使用git

 

 

 

 

 

 

 

 

 

 

 

为开源项目贡献代码

 

# 1 看到开源代码
# 2 fork---》在你的仓库中就看到了这个项目
# 3 clone下来,修改代码
# 4 推送到自己的仓库汇总
# 5 提交pr pull request
# 6 等待作者审核---》审核过了,同一了---》跟线上分支合并一样

 

posted @ 2024-01-23 15:32  拆尼斯、帕丁顿  阅读(27)  评论(0)    收藏  举报