赞
踩
本教程一共5部分,这是第5部分
总目录:保姆级Git教程0-序章
3、保姆级Git教程3-Git本地仓库管理代码的基本操作流程
目录
常见远程仓库有gitHub、Gitee码云、GitLab
gitHub在服务器国外,国内不好访问、Gitee码云是国内的、GitLab是自己搭建的,一般是企业内部使用的
所以我演示gitee,想看gitHub的可以等后面我可能会发
gitee码云的网址:
注册登录就不演示了
登录账号后来到gitee首页,在右上角的加号+,中选择创建仓库
填上仓库名称、仓库介绍,路径会自动与仓库名称同名
开源指的是我们的仓库公开在网上,别人可以看见并克隆我们的仓库
私有就是自己才能看到和操作
下三个选项都不要选
我们要把本地仓库推送上来,所以不用初始化仓库
当你项目一开始是从码云是创建的就可以勾选初始化仓库
填完了就点击下方创建仓库,创建完就是这个界面,下面我们要把仓库推送上来
我们要想一下,那是不是每个人都可以往我们仓库推送?
当然不可以,需要限制推送权限,一般有两种方法
1、验证仓库创建者的账号密码
2、使用公私钥对
一般我们采用第2种方法较为安全
在右上角账号头像里进入设置,左边找到SSH共钥配置,官方有生成公钥教程
可以看官方的,也可以继续往下看
生成公钥就一个命令,在Git Bash命令窗口输入它
ssh-keygen -t rsa rsa是生成非对称密钥的算法
密钥生成成功之后被放到了用户目录里,我们可以去文件查看也可以使用一个命令将其获取出来
cat ~/.ssh/id_rsa.pub
从ssh-rsa复制这堆码,粘贴到gitee的SSH配置上 ,然后输入标题确定即可
他会让你输入密码,直接输入就ok
下面用一个命令来查看SSH公钥是否配置成功
ssh -T git@gitee.com
如果你是第一次配置,就会提示你yes/no
需要输入yes就会看到下面的successfully就意味着成功了
命令格式git remote add 远程仓库名 远程仓库地址 本地仓库关联远程仓库
这一步就是把我们本地的仓库与远程仓库关联起来,需要先获取到远程仓库的地址
从我的这里进入我们刚才创建的仓库
将选项切换到SSH公钥,直接复制下面的命令到Git Bash粘贴(粘贴键是鼠标中键或鼠标右键选择)粘贴可能会在首尾携带其他符号,删除即可
origin是远程仓库名,一般规范命令这里就是固定死的origin,不用乱改,一个本地仓库可以关联多个远程仓库
上面操作完就可以查看是否关联上了远程仓库
使用命令git remote 查看当前本地仓库所关联的远程仓库
这样就成功关联上了远程仓库了
本地仓库关联好远程仓库之后就应该把我们的仓库推送上去了
命令格式git push [-f] [--set-upstream] [远端仓库名称] [本地分支名][:远端分支名]
命令示例: git push origin master:master
作用是把本地仓库的某个分支,推送到远端仓库的某个分支
[-f] 指的是本地的修改与远端的修改有冲突会强制推送覆盖掉远端的修改(当本地修改与远端修改有冲突时没加 -f 推送会失败) ,不过一般没什么用工作中一般是只允许添加不允许覆盖的,没有覆盖这个权限,防止小白不懂导致数据受损
[--set-upstream] 指的是把分支推送到远端仓库,同时与远端仓库的分支建立关联
下面我将本地master分支推送到远端master分支上
当本地分支名与远端分支名相同时可以只写一个。示例:git push origin master
此时进入远端仓库可以查看到我们的文件
当本地分支已经与远端分支有关联时,直接git push即可,下面5.3.4演示
接着上面讲
查看本地分支与远程分支是否有关联我们可以使用以下命令
git branch -vv
一开始我们是没有关联的,所以查看会是这个结果
进行关联有两种情况
现远程有分支
比如master上面已经推送,那么就使用以下命令
git branch --set-upstream-to=远程仓库名/远程分支名 本地分支名
我们输入命令git branch --set-upstream-to=origin/master master
显示branch 'master' set up to track 'origin/master'.就表示关联成功
再使用查看命令查看一下有什么变化
现远程无分支
就像我们的dev2分支还没推送上去,就是远端只有一个master分支
那么我们在推送dev2分支的同时就可以关联它,上面5.3.3推送部分讲过在推送命令上加--set-upstream即可
我输入命令git push --set-upstream origin dev2:dev2
推送成功可以在远程仓库看到
关联后我们继续git branch -vv查看
上面说到“当本地分支已经与远端分支有关联时,直接git push即可”
我们试一下
克隆就是把远端仓库复制一份到电脑上,复制过来就是一个本地仓库
命令: git clone 仓库路径 文件名
这个命令克隆到的位置是你的Git Bash窗口打开的路径下(比如我在桌面打开,就克隆到桌面,也可以使用cd 路径进行切换路径)
现在我们把刚才推送到远端的仓库克隆一份过来
仓库路径需要到码云上找到该仓库并选择SSH
点击克隆/下载
在桌面打开Git Bash输入指令git clone git@gitee.com:Open_Right/git_test01.git git_test01_clone01.git
打开克隆过来的仓库与码云的远程仓库进行对比
克隆一般只用于从0到1获取到项目的仓库,因为项目可能很大,平常的修改不可能就说每次都进行一次克隆,费时费力
所以就有了抓取和拉取这两个操作
以下的本地仓库与克隆仓库可以理解为两个不同程序员开发的仓库,一个本地仓库对远程仓库进行了更新,克隆仓库就可以通过抓取和拉去操作获取这次更新
记住抓取不自动合并,拉取自动合并
抓取操作就是将远程仓库里的更新都抓取到本地,不会进行合并
命令 git fetch 仓库名(origin) 分支名
我们先将原本的本地仓库()对远程仓库做一次推送,推送一个新文件上去,就等于更新了远程仓库
再将更新的这个文件抓取到克隆仓库中
以图的形式查看提交记录
可以看到远程仓库的版本更加新,当前克隆仓库与远程仓库版本不一样
此时需要手动把远程master分支合并到克隆仓库中(拉取操作就省了这一步)
这样一来克隆仓库就与远程仓库同步更新了
拉取操作就是将远程仓库里的修改拉到本地并自动进行合并,等同于fetch+merge
命令 git pull 仓库名(origin) 分支名
拉去pull其实就相当于把fetch和merge合并成一个指令了
我们再对远程仓库进行一次更新
然后让克隆仓库拉取
就相当于抓取与合并操作啦
出现这个错误的原因是有人先你一步推送更新了远程仓库
你只需要先pull或者fetch+merge一下,确保目前仓库与远程的一样
再进行推送即可
但拉取也可能会出现下面问题
它会提示你这样
这一步其实本质上就是分支合并冲突
和分支合并冲突的解决方法一模一样可以去看上一期教程保姆级Git教程4-Git分支
本教程一共5部分,这是第5部分
总目录:保姆级Git教程0-序章
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。