起因

在实际工作项目当中,我们会进行多人协同开发,这就需要一个远程仓库来管理项目

正常管理项目代码的工具有三种:GitHub、Gitee(码云)、Gitlab(公司一般用这种)

项目创建者操作

新建仓库

作为项目的创建者,刚开始没有远程仓库,我们需要创建一个远程仓库(这里以码云为例),

如下:

git 配置 远程 仓库 git远程仓库有哪些_git

git 配置 远程 仓库 git远程仓库有哪些_git 配置 远程 仓库_02

git 配置 远程 仓库 git远程仓库有哪些_开发者_03

git 配置 远程 仓库 git远程仓库有哪些_远程仓库_04

连接远程仓库前进行全局配置用户信息

git config --global user.name "yessir"
git config --global user.email "983410683@qq.com"

有/无本地仓库的两种连接方式

# 1.现在本地没有仓库 >新建本地仓库 >添加本地仓库到远程
    mkdir luffyapi
    cd luffyapi
    git init 
    touch README.md
    git add README.md
    git commit -m "first commit"
    git remote add origin https://gitee.com/yessir_ye/luffyapi.git  # 连接远程仓库
    git push -u origin "master"  # 将master分支提交到远程仓库

# 2.本地已有仓库
    cd existing_git_repo  # 进入本地仓库
    git remote add origin https://gitee.com/yessir_ye/luffyapi.git  # 连接远程仓库
    git push -u origin "master"  # 将master分支提交到远程仓库

 连接远程仓库,push的时候会让我们输入用户名密码(就是码云的用户名密码),输入即可

如果之前有人在本电脑上登录过,就无法push,我们需要进行如下操作:

打开控制面板>用户账户>管理Windows凭据>找到码云对应的那条数据,删除
然后重新连接远程,输入我们自己的用户名密码即可

git 配置 远程 仓库 git远程仓库有哪些_远程仓库_05

git 配置 远程 仓库 git远程仓库有哪些_git 配置 远程 仓库_06

git 配置 远程 仓库 git远程仓库有哪些_git_07

 项目开发者操作

作为项目的开发者,我们只需要将远程仓库的代码clone下来,继续开发即可:

# 1 项目开发者,参与者(换了一台电脑),把代码拉下来继续开发
    -git clone https://gitee.com/liuqingzheng/lqz_test.git
    -能看到完整的版本和日志控制
    -可以回复到任意版本
        -git rest --hard 版本号
        -git checkout . 
       # 表示回到指针指向的版本,因为已经用git rest --hard把指针移动了,所以checkout .就是当前再的版本上的东西
# 2 本地新增c.txt文件
    -提交到暂存区
    -提交到版本库(没有提交到远程,远程看不到)
    -提交到远程:git push origin master
    
    
# 3 让a文件夹中的代码成为最新的
    -git pull origin master
    
# 4 重点:每次再提交代码之前,一定要先更新代码(拉),如果不拉提不上去

注意:

每次push(提交到远程)代码之前,一定要先pull(将远程仓库代码拉下来)一下,

否则会失败,如果强制提交可能会导致同事刚提交完的代码不见了

ssh连接和https连接

公司内部正常大部分都用ssh连接

# 1 公司内部大部分用ssh连接
    -领导给你一个git地址(项目地址)
    -你 git clone 地址  到本地
    -改代码,改完了---》提交(禁止)
    -ssh配置,以后都不用输密码了
# 2 配置如何做
    -对称加密(加密和解密用同一套秘密)
    -非对称加密(公钥和私钥),公钥加密,私钥解密
    
    -生成一对公钥和私钥(用命令)
        -https://gitee.com/help/articles/4181
        -ssh-keygen -t rsa -C "lqz@qq.com" 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥)  
        -把公钥复制出来,再码云上配置
 
# 跟远程操作有三个命令
-git pull
-git push
-git fecth(一般不用,他跟pull是一个东西,当作不知道)

ssh连接配置

ssh生成

1.打开git输入如下命令:
        ssh-keygen -t ed25519 -C "yessir@qq.com"
        # 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥)  

2. 把公钥复制出来,在码云上配置(C:/ >用户 >yessir >.ssh)

git 配置 远程 仓库 git远程仓库有哪些_git 配置 远程 仓库_08

git 配置 远程 仓库 git远程仓库有哪些_git_09

用记事本打开公钥,复制里面的内容,粘贴到码云上,如下:

git 配置 远程 仓库 git远程仓库有哪些_开发者_10

git 配置 远程 仓库 git远程仓库有哪些_git 配置 远程 仓库_11

协同开发

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


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下来的代码与第二个人本地的代码在统一位置修改了,
  有冲突,所以会飘红
# 1 协同开发出现冲突,如何解决
# 2 git pull origin master  拉下远程代码,同事和你修改了同一个位置,会冲突,如下
<<<<<<< HEAD
你的代码
=======
别人代码
>>>>>>> origin/master
# 3 处理方案
    -删除你的代码
    -删除同时代码
    -合并你们的代码# 肯定是改了共同的代码才出的冲突--->保留某个人或者两个都保留
git add .
git commit -m
git push origin master
# 1 远端创建一个dev分支
    -在远端直接创建
    -本地创建,提交到远端
    git checkout -b dev
    git push origin dev
# 2 本地新建一个dev_bug分支
    -dev_bug分支改了文件
    -dev分支改了同样的文件
    -合并就出冲突
    -git merge dev_bug (在dev分支上操作)
    -解决冲突(删你的,或删同事的,或者合并起来)
    -git add .  git commit 
    -正常了,冲突解决
 # 3 手动线下合并代码并提交到远程
    -git checkout master
    -git merge dev 
    -如果出冲突,解决
    -git add .
    -git commit 
    -git push..

线上分支合并

# 远端:master和dev分支

# 本地:master和dev分支

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

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



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

git 配置 远程 仓库 git远程仓库有哪些_git 配置 远程 仓库_12

远程新建分支

如下图:选择1或者2都可以进入新建分支,

git 配置 远程 仓库 git远程仓库有哪些_git_13

git 配置 远程 仓库 git远程仓库有哪些_开发者_14

本地新建分支

三种方式:两种命令 + 直接切换到远端有但是本地没有的分支,

# git branch 分支名
git branch dev  # 创建dev分支

# git checkout -b 分支名
git checkout -b dev  # 创建并切换到dev分支

除了以上两种命令创建外,如果远程有一个分支,本地可以直接切换该分支

会自动将远程的分支直接拉到本地,如下:

git 配置 远程 仓库 git远程仓库有哪些_git_15

线上回滚

# 1 切换到master分支
# 2 回滚到某个版本  git reset --hard  版本号
# 3 强制提交代码 git push origin master -f

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都可以提供选择不同的源码,和不同的远程仓库交互

变基

merge普通合并分支,git log可以看到很多条分支的记录,会很杂乱

如果主分支想很干净,不管提交了多少次,变基就只能看到一条

所以,变基是为了让主分支看起来更加的简洁而又明朗

git 配置 远程 仓库 git远程仓库有哪些_开发者_16

git 配置 远程 仓库 git远程仓库有哪些_git_17