16 git
一.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
练习
#创建dev分支
105 git branch dev 106 git checkout master 107 git branch
#切换到bug分支,新建bug.txt,新增一行,在xx.txt新增一行,提交,切换到master,将bug合并到master 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
#切换到dev分支,在sss.txt新增一行,提交,切换到master,将dev合并到master,此时master节点就是bug和dev修改后合并的数据 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
##### 操作步骤
1.1 注册gitee账号
-部分公司的代码,是托管在gitee上的
1.2 创建一个远程仓库(点+或者我的 仓库+新建仓库)
-后端项目和前端项目放到两个仓库
-如下图
1.3 本地仓库,提交到远端(需要保证,远程仓库是空的)
1.31 git全局设置,设置账号和邮箱
git config --global user.name "tiantian654321" git config --global user.email "1252216398@qq.com"
1.32 本地没有仓库,创建git仓库
cd luffy_back git init touch README.md git add README.md git commit -m "first commit" git remote add origin https://gitee.com/tiantian654321/luffy_backend.git
git push origin master
删除gitee仓库,此时就是本地没有仓库,尝试提交路飞
git init(初始化之后,变成了红色,提交到远程仓库之前,需要加.gitignore忽略文件,可拷贝前端的,然后加上需要忽略的文件)
#.gitignore
加上如下:
scripts __pycache__ *.pyc *.log
具体提交路飞的步骤(pycharm—— Terminal):
(luffy) D:\python19\untitled3\luffy>git init
修改忽略文件 git add . git commit -m '第一次提交' git remote add origin https://gitee.com/tiantian654321/luffy_backend.git
git push origin master
1.33 本地有仓库
cd existing_git_repo # 添加远程仓库,git remote add ,origin:起了个名字,地址是:https://gitee.com/liuqingzheng/luffy_back.git # 以后origin就代指这个地址 git remote add origin https://gitee.com/tiantian654321/luffy_backend.git
# 把本地的master提交到origin地址
git push origin master # 输入 gitee的账号和密码(一旦输入过一次,会在操作系统上记录下,以后不用输入了,cmd凭据管理删除之后就需要再次输入了,如果某台机器上切换用户,需要删除才能切换到另一个用户)
# 仓库已经存在了---》基于仓库继续开发 # git clone https://gitee.com/liuqingzheng/luffy_back.git 你领导发给的 # 使用pycharm打开,继续开发即可 git add . git commit -m '提交' # git remote 查看远程仓库 git push origin master # 克隆下来的自动匹配上
remote源操作
""" 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 git@gitee.com:doctor_owen/luffyapi.git 5)提交代码到远程源 >: git push 源码 分支名 6)克隆远程源 >: git clone 远程源地址 """ """ 1)通过克隆方式连接远程源,默认远程源名就叫origin;所以主动添加远程源来连接远程仓库,源码也用origin 2)本地一个仓库只需要和远程一个源进行同步,所以只需要连接一个远程源,如果还想把本地代码同步给第三个平台,那么可以通过主动添加远程源来连接第三个平台的远程仓库,此时的源码就不能再叫origin了,比如online都可以 3)pull和push都可以提供选择不同的源码,和不同的远程仓库交互 """
# 公司里常用的
-只需要配置好公钥,私钥,以后不需要使用用户名密码了
官网:https://gitee.com/help/articles/4181#article-header0 #1.生成公钥,私钥:
ssh-keygen -t ed25519 -C "1252216398@qq.com"
#2.生成后,把公钥配置在远程仓库(在用户家目录的.ssh文件夹中,见下图)
-我的(头像)--->设置---》ssh公钥---》配置上刚刚生成的公钥
-表示我这台机器,不需要输入用户名密码就可以操作我的gitee账号了(提交,拉取代码)
-现在删掉凭据,再提交代码,还需要输入用户名密码?
-git remote add origin https://gitee.com/liuqingzheng/luffy_back.git(此处需要写ssh的链接地址,所以这里是需要密码的)
-git remote 查看远程仓库
-git remote remove origin # 删除origin这个远程仓库
#3. 重新配置远程仓库
git remote add origin git@gitee.com:liuqingzheng/luffy_back.git(ssh链接地址)
# 修改代码
git add .
git commit -m ''
git push origin master # 第一次输入yes,以后都不用了,因为已经配好ssh了
# 多个人同时开发一个项目,既要做好版本的管理,又要做好代码的合并 """ 1)作为开发者,第一次同步项目(前台已经是项目开发者了) >: git clone 项目地址 2)本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互 4)交互顺序:必须 先拉(pull)后提(push) 5)必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互 >: git checkout dev >: git add . >: git commit -m '本次提交的信息提示' >: git pull origin dev >: git push origin dev """
五、
# 分支合并 # 协同开发,共同操作同一个分支 # 你们刚到公司,可能只给你访问权限---》只能看,不能提交
1.多个人在同一个分支上开发,出的冲突
多个人在同一分支上开发,一个人修改好了之后推到了远程仓库,第二个人也在相同的位置修改了代码,需要先pull,再push,由于pull下来的代码与第二个人本地的代码在统一位置修改了,有冲突,所以会飘红
# 多个人在同一个分支上开发---》出的冲突 <<<<<<< HEAD # 你的代码 print('lqz') ======= # 远端别人的代码 print('王景灯') >>>>>>> 363ecd639982a9c539c7280bd37e68d2822911ff # 肯定是改了共同的代码才出的冲突--->保留某个人或者两个都保留 git add . git commit -m git push origin master
2.分支合并冲突
git branch dev git branch 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 '注释'
# 远端: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 log可以看到很多条分支的记录,主分支想很干净,不管提交了多少次,变基只能看到一条。
-我知道,但我们用的merge的普通合并
-是否显示之前分支上的版本记录
2.你知道git flow吗?==》多分支的方案
-知道,但是我们没用,不适合我们公司
-我们用的就是master,dev,bug分支模型