前节回顾
#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 "[email protected]" -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的了,而是 [email protected]: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 "[email protected]" 2 在操作系统用户--家路径--》.ssh文件夹---》公钥私钥 id_ed25519.pub # 公钥--》给别人 id_ed25519 # 私钥---》自己留着 3 去gitee配置公钥 https://gitee.com/profile/sshkeys ssh -T [email protected] # 输入yes 4 以后可以免密操作 5 增加一个远程仓库地址:指定是ssh链接 git remote add origin [email protected]: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 [email protected]: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 [email protected]:liuqingzheng/luffy_api.git -3 在拉取的仓库中加代码(我们直接复制过来的) -4 写好忽略文件 -5 git add . -6 git commie -m '我的第一次' -7 git push origin master -8 以后都开发当时拉下来这个文件夹 #####注意:##### 如果某个文件或文件夹已经被版本管理了,后期再设置忽略,就无效了 -如何让它再被忽略呢? -把这个文件删除后,以后就被忽略了
本地拉取代码--》你是项目参与者--》大概率都是这个角色
# 1 git clone 到本地--- -有代码,项目也能运行 -git clone [email protected]: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 等待作者审核---》审核过了,同一了---》跟线上分支合并一样
标签:__,git,仓库,gitee,---,本地,luffy,05days,分支 From: https://www.cnblogs.com/wzh366/p/17982605