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. 仓库创建者---》代码是我提交的

# github,gitee,gitlab

##### 操作步骤
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凭据管理删除之后就需要再次输入了,如果某台机器上切换用户,需要删除才能切换到另一个用户)

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

# 仓库已经存在了---》基于仓库继续开发
# 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都可以提供选择不同的源码,和不同的远程仓库交互
"""

三、ssh协议连接远程源

# 公司里常用的
     -只需要配置好公钥,私钥,以后不需要使用用户名密码了

官网: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可以看到很多条分支的记录,主分支想很干净,不管提交了多少次,变基只能看到一条。

 

面试常问问题

1.你知道git rebase (git 变基)

-我知道,但我们用的merge的普通合并
    -是否显示之前分支上的版本记录

2.你知道git flow吗?==》多分支的方案

-知道,但是我们没用,不适合我们公司
    -我们用的就是master,dev,bug分支模型

 

 

 

 

 

posted @ 2022-02-22 16:35  甜甜de微笑  阅读(58)  评论(0编辑  收藏  举报