mzy git学习,git推送到远程库(八)
git在同步到远程库
关于git中多个用户切换的事情:
完全使用账户密码策略连接远程库:
- 之前一直尝试在本地切换多个用户,发现一直不行,很奇怪?后面发现必须要去win10的凭据管理器删除当前git的凭据。
以上是输入账户密码,进行凭据校验的情况;
完全使用ssh免登陆策略进行远程库连接:
- 如果是要通过ssh方式登陆的话,建议还是不要多用户切换了,因为ssh方式免登陆校验的话,每次都要去生成新的ssh密钥去切换,着实太过于麻烦了。
配合账户密码策略和ssh两种策略管理两个账户:
之前还想过,一个用户使用ssh策略,一个用户采取账号密码策略?没有试过,觉得应该可行?
好的,我刚刚去试了一下,这种方式可行,一个账户使用,账户密码策略;一个账户使用ssh免登陆验证。这样可以不用每次修改,就可以同时在本地使用两个账户!
把本地库推送(备份)到远程库上:
这里说的推送到远程库上的步骤都是针对一开始远程库是空的的操作,并不是在远程库已经有分支,把本地库和远程库进行关联!如果要进行关联的话,请查看这篇文章
场景:
在多人协同工作,或者我们把代码托管到第三方平台上的时候,我们要把本地库和远程仓库对应起来。
其实远程库和本地库性质上一模一样,就是一个为了更方便的备份而已!
我们在单机上跑了这么久的git,终于上网啦!
在本地添加远程库
首先在码云上建一个工程,然后在里面复制远程仓库地址:
从上面的图片中可以看出,有两种协议的仓库地址可以选:
一种就是上面说了的https的,一种就是git自己的协议(通过ssh免登陆验证)。
如果要使用ssh登陆:
# 先使用此命令:
ssh -keygen -t rsa -C "邮箱"
ssh-keygen -t rsa -C "3244874077@qq.com"
生成密钥之后,把公钥复制到自己的码云或者github上,然后省略…
添加远程库映射
# 为当前仓库添加一个远程库:git remote add [仓库名] [地址]
git remote add origin https://gitee.com/yaoguai1998/LearnGit.git
# 默认的仓库名是origin,当然你可以根据仓库特征自己取名。
# 上面是https协议的,这种是通过邮箱密码验证的。
这里就引入了git的remote命令了:
下面简单介绍一下remote的相关命令,及一些常用的参数
提醒以下的$符是linux的命令行开始符,不是命令内容
以下遇到origin我们都默认为远程库名,master都默认是主分支名,dev次分支名
# 1.增加
# 添加远程库 git remote add [origin] [url]
# 为当前仓库添加一个远程库:git remote add [仓库名] [地址]
$ git remote add origin https://gitee.com/yaoguai1998/LearnGit.git# 2.删除
# 删除一个远程库的地址及连接 git remote rm [origin]
$ git remote rm origin# 3.查看
# 查看当前本地库中添加了几个远程库和名字
$ git remote
learn
origin # 查看当前的本地库中的远程库的名字,和push(推送),fetch(抓取)地址
$ git remote -v
learn git@gitee.com:yaoguai1998/LearnGit.git (fetch)
learn git@gitee.com:yaoguai1998/LearnGit.git (push)
origin https://gitee.com/yaoguai1998/LearnGit.git (fetch)
origin https://gitee.com/yaoguai1998/LearnGit.git (push)## 4.修改url
# git remote set-url [origin] [url]
$ git remote set-url origin git@gitee.com:yaoguai1998/LearnGit.git# 以上只是remote的常用参数
# 以下为推荐使用:git remote [-v | --verbose]or: git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>or: git remote rename <old> <new>or: git remote remove <name>or: git remote set-head <name> (-a | --auto | -d | --delete | <branch>)or: git remote [-v | --verbose] show [-n] <name>or: git remote prune [-n | --dry-run] <name>or: git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]or: git remote set-branches [--add] <name> <branch>...or: git remote get-url [--push] [--all] <name>or: git remote set-url [--push] <name> <newurl> [<oldurl>]or: git remote set-url --add <name> <newurl>or: git remote set-url --delete <name> <url>-v, --verbose be verbose; must be placed before a subcommand
推送到远程库
# git push [仓库名] [分支名]
# 这里的意思是推送主分支,master分支,origin也是默认的仓库名
$ git push origin master# 也可以这样,意思是仓库名和分支名不是绝对的
# 把 dev分支,推送到仓库地址映射名为gitlearn的远程仓库上
$ git push gitlearn dev# 第一次推送到远程库的master上,我们建议是加上 -u 参数的
# 加上-u参数,如果远程库不存在此分支的话,就会创建此分支
$ git push -u origin master# 有时候在码云上初始了远程库,其中的master分支已经初始化好了,所以可能要导致此时无法push上
# 在这种第一次推送,并且仓库是几乎空白的情况下,无法推送的话,我们可以加上--force参数
$ git push --force origin master
# 或者这种形式
$ git push -u origin master -f
从远程库上拉取
git clone
# git clone [url]
# 克隆有三个效果:
# 1.完整下载远程库
# 2.创建本地库并设定别名:origin (并绑定地址)
# 3.初始化本地库:(.git目录)
# 所以建议,如果我们是初始化本地库的话,不要使用pull命令
# 直接使用clone命令,省去了很多麻烦
$ git clone https://gitee.com/yaoguai1998/LearnGit.git
git fetch
# 把远程库上的master分支的内容抓取到本地
git fetch origin master
因为fetch只是把内容从远程库中抓取下来,还没有做合并的动作(merge),所以在fetch之后,vim本地文件,是看不到修改的。
只有通过:git checkout origin/master操作(git checkout 本地库名称/分支名称),才能切换到fetch下来的分支中去,然后才能看到修改
(我猜想这个是切换到版本库中master中的,因为我们的内容被fetch下来之后应该放到本地库中)
如果要切换回去的话,要通过git checkout master 我觉得这个是切换到工作区中的master中,那么其实区别就出来了!
# 切换到本地库中的分支的话:git checkout 版本库名字/分支名字
$ git checkout origin/master
# 切换到工作区中的分支的话:git checkout 分支名称
$ git checkout master
通过fetch操作,只是将远程库中的内容拉取到了本地,但是其实还没有和本地的内容进行合并:其实通过 [远程库名/分支名] 的形式,就是表明是远程库的分支(后面我们操作远程库和本地库的分支建立追踪关系时,远程库的名字就是这样表示的)。
建立分支与分支之间的追踪关系
上面说到远程库和本地库的分支之间建立追踪关系,这里就顺便说明一 下,什么是追踪关系:
在我们上面进行push、fetch以及后面的pull等等和远程库进行交互的操作的时候,我们都会加上分支名称:例如git push origin master、git fetch learngit dev等等,这样每次都需要写后面的分支名称和远程仓库名称,但是我们很多时候就是想推送我们当前所处的分支,远程库其实也就是固定的那一个或者两个,所以追踪关系就是为了解决这样一点的,如果我们建立的本地分支和远程库的分支的追踪关系的话,那么当我们push、pull的时候,就可以省略分支名称,默认就是当前分支和设定的远程分支进行推送和拉取!
如果不建立追踪关系直接:git push的话
# 直接就失败了
$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, usegit push --set-upstream origin master
查看本地库的分支和远程库的分支的映射关系: git branch -vv
# 查看本地库的分支和远程库的分支的映射关系: branch -vv
$ git branch -vvdev d62c9e1 dev 上提交readme.txtissue a278fe9 issue中修改了LICENSE
* master 434cab2 解决冲突# 发现以上的分支和远程库的分支的都没有建立追踪关系
# 这里尝试给issue和远程库的origin/issue建立追踪关系
# 首先切换到issue分支
$ git checkout issue
Switched to branch 'issue'# 通过两种方式建立本地分支和远程分支的追踪关系
# 1.git branch -u [仓库名]/[分支名]
# 2.git branch --set-upstream-to [仓库名]/[分支名]
$ git branch -u origin/issue
Branch 'issue' set up to track remote branch 'issue' from 'origin'.# 再通过:git branch -vv 查看追踪关系,发现issue已经有了
$ git branch -vvdev d62c9e1 dev 上提交readme.txtissue f3528d7 [origin/issue] 在issue中修改了LICENSEmaster 434cab2 解决冲突
* mzy f3528d7 在issue中修改了LICENSE# 修改文件之后,git commit 之后,直接git push 发现追踪关系已经生效
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 324 bytes | 324.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by Gitee.com
To gitee.com:yaoguai1998/LearnGit.gitf3528d7..39a6ce1 issue -> issue# 切断掉联系:git branch --unset-upstream
$ git branch --unset-upstream
# 通过git branch -vv 发现追踪关系已经不存在了!
$ git branch -vvdev d62c9e1 dev 上提交readme.txt
* issue 39a6ce1 修改了LICENSEmaster 25478c7 修改了readme.txtmzy f3528d7 在issue中修改了LICENSE
git merge
回到正题:
前面我们说fetch只能抓取到本地库中,但是并没有在我们的工作区中体现,所以我们要手动进行一个本地库和我们工作区中的分支进行merge的操作!
# 首先切换回我们的master分支
$ git checkout master# 首先把远程库中的东西拉取下来
$ git fetch origin/master
# 现在我们去合并版本库中的master:
$ git merge origin/master
以上这样才完成了本地库和远程库的合并
git pull
pull,其实就是fetch和merge的合并操作,一个pull其实就是把fetch和merge全都做了,如果你的程序不复杂,并且协同不那么麻烦,最好还是使用pull操作,来简化你的繁琐的过程。
# 首先把远程库中的东西拉取下来
$ git fetch origin/master
# 现在我们去合并版本库中的master:
$ git merge origin/master# 等同# git pull [仓库名] [分支名]
$ git pull origin master
# 如果使用了追踪的话,我们在当前分支上就可以直接
$ git pull
mzy git学习,git推送到远程库(八)相关推荐
- 【Docker】将本地镜像推送到远程库/私有库
前言 这里记录如何将本地镜像推送到远程库和私有库. 区别,一个是存放到阿里云,同一个团队可以登录到同一个阿里云仓库,去拉取镜像.一个是存放到本地私有库,同一个团队可以连接同一个私有库,去拉取镜像.例如 ...
- Git如何将本地分支推送到远程库中
需求 有一个项目,采用Git进行代码版本控制,如何将本地分支feature_A推送到远程分支feature_A,并建立关联关系. 具体实现 针对以上需求,需按以下情况分别处理: 情况一: 远程已有fe ...
- git本地仓库推送到远程仓库指定分支步骤
1.初始化项目 git init 2.建立本地仓库和远程仓库的连接 git remote add origin 远程仓库URL 3.将码云上的仓库pull到本地 git pull origin 分支名 ...
- git本地分支推送到远程分支
1.远端git库的创建和初始化 创建git仓库可以在远端创建一个仓库, 然后check到本地,在本地的文件里创建工程文件,然后提交 也可以将本地现有的工程和远端的空仓库关联 本地创建了一个工程 iOS ...
- git本地仓库 推送到远程 完整流程 及 错误解决方法
git推送本地仓库到远程 以下为通过IDEA亲测可完整实现本地仓库推送到远程的流程 完整流程 git init //初始化本地仓库 git remote rm origin //删除与远程仓库连接关系 ...
- Git本地项目推送到远程仓库
目录 1.初始化git 2.添加远程地址并给地址起一个别名 3.合并远程代码 4.推送 5.常见问题 6.无法推送 7.查看远程仓库信息 8.拉取与本地不相关的git项目 9.配置ssh公钥 1.初始 ...
- vs添加码云远程_项目git步骤,将项目托管到码云。git本地分支推送到远程分支...
项目git的步骤 1.创建.gitignore文件,进行文件过滤.写着不需要上传到git仓库的文件夹名字 2.readme.md 3.拷贝LICENSE,开源协议 4.创建本地仓储 * 使用git i ...
- git 新建分支 推送到远程 首次pull代码报错 git branch --set-upstream-to=origin/<branch>
git pull 提示 git branch --set-upstream-to=origin/ xxx 在本地创建新分支后,上传到远程仓库,首次pull 的时候,会提示: 当前分支与远程分支并未建立 ...
- Git 新建仓库推送远程技巧
将文件夹初始化为本地仓库并推送至远程仓库 说明 命令 #添加阅读我 说明 echo "# 说明" >> README.md #初始化git仓库 git init #将工 ...
- 在自己的服务器上搭建git仓库服务器(本地推送到远程仓库、远程仓库推送到本地)
文章目录 Git服务器 一.安装Git 二.配置Git 1.创建Git用户 2.仓库初始化 三.使用仓库 1.本地推送到远程仓库 2.远程仓库推送到本地 总结 Git服务器 一般,我们编写项目,都会保 ...
最新文章
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、形状配置)实战
- Android开源项目分包方式学习(eoe、oschina、github)
- element ui table scrollTop 滚动到行头或行尾
- ESXi主机管理内存资源的方式
- Go语言的基准测试简单示例
- 霍夫变换检测直线的公式推导以及基于opencv的源代码分析并实例实现
- 浏览器userAgent大全
- 关于BOM的一些基本知识以及表格的操作
- 华硕aura完全卸载_华硕RadeonRX 5500XT显卡,散热强力升级,畅玩游戏冷静体验
- java护眼的颜色_爱护眼睛,从IDEA开始,护眼色设置走起-护眼设置
- 移动端安卓vin码/车架号识别
- C# 根据主机名称获得IP
- 【今日小记】程序员的孤独,没人懂
- 【券后价12.90元】【包邮】植护婴儿湿巾纸宝宝湿纸巾儿童手口专用80抽家用大包装特价实惠装...
- Android 关于图片的压缩
- 美国计算机专业gre314,托福89,GRE 314获南加大计算机录取
- ios swift收起键盘
- Adobe Lightroom Classic 2021(LR 2021)
- [ASP.NET网站开发] web程序设计,期末作业,问卷填写与学生选课管理系统(超简单,容易懂!课程考核必过)(使用内置数据库)
- 已知等价关系求商集_等价关系习题
热门文章
- 模拟退火算法的原理+应用
- 深度学习与人工神经网络的介绍
- 小猫钓鱼纸牌游戏java_C语言实现纸牌游戏(小猫钓鱼)
- 如何准备全国计算机二级Python,二级Python考试技巧
- 工控行业学什么编程语言比较好_中国工控|想学PLC编程?先弄清5种PLC专用语言 !...
- acp计算机编程大赛时间,2021年ACP考试时间安排 - 希赛网
- Ubuntu 18.04 ibus安装配置中文拼音输入法
- 【day4】【洛谷算法题】-P5708三角形面积-刷题反思集[入门1顺序结构]
- x线计算机断层摄影机房面积应不小于,X射线计算机断层摄影放射防护要求GBZ165-2012.pdf...
- 数据字典的作用是什么,它有哪些条目?