git操作远程仓库(进阶)
起因
在实际工作项目当中,我们会进行多人协同开发,这就需要一个远程仓库来管理项目
正常管理项目代码的工具有三种:GitHub、Gitee(码云)、Gitlab(公司一般用这种)
项目创建者操作
新建仓库
作为项目的创建者,刚开始没有远程仓库,我们需要创建一个远程仓库(这里以码云为例),
如下:




连接远程仓库前进行全局配置用户信息
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凭据>找到码云对应的那条数据,删除
然后重新连接远程,输入我们自己的用户名密码即可



项目开发者操作
作为项目的开发者,我们只需要将远程仓库的代码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连接
# 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连接配置
1.打开git输入如下命令: ssh-keygen -t ed25519 -C "yessir@qq.com" # 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥) 2. 把公钥复制出来,在码云上配置(C:/ >用户 >yessir >.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下来的代码与第二个人本地的代码在统一位置修改了, 有冲突,所以会飘红
# 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

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


本地新建分支
三种方式:两种命令 + 直接切换到远端有但是本地没有的分支,
# git branch 分支名 git branch dev # 创建dev分支 # git checkout -b 分支名 git checkout -b dev # 创建并切换到dev分支
除了以上两种命令创建外,如果远程有一个分支,本地可以直接切换该分支
会自动将远程的分支直接拉到本地,如下:

线上回滚
# 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可以看到很多条分支的记录,会很杂乱
如果主分支想很干净,不管提交了多少次,变基就只能看到一条
所以,变基是为了让主分支看起来更加的简洁而又明朗




浙公网安备 33010602011771号