git的学习笔记(二):git远程操作
git的学习笔记(一):git本地操作
1.创建ssh key
ssh-keygen -t rsa -C "your_email@example.com"
执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公钥id_rsa.pub和私钥id_rsa
2.登录github网站,在用户的settting页面,添加ssh key,把刚才生成的私钥内容粘贴到key文本中.




在gitlab或者gitee网站添加密钥的方式与github添加密钥的方式相同
3.远程仓库的管理
git remote add github <remote URL> 使用https方式将本地仓库关联到远程仓库(远程仓库名默认为origin)
git remote add github git@github.com:用户名/repo_name.git 使用git方式将本地仓库关联到远程仓库
git remote remove github 删除关联到本地的远程仓库,origin是远程库的名字
git branch --set-upstream-to=origin/smart smart 将分支smart设置为跟踪来自origin的远程分支smart
git push 把本地的所有提交推送到默认的远程的仓库
git push github -all
git pull github master 将远程origin代码拉到本地master分支
git push github master 将本地master分支代码推送到远端仓库
git clone <HTTP URLs/remote URL> 复制远程项目到本地
4.本地文件与远程仓库文件不同,不相关时的合并
先切换到需要合并的分支,例如:本地master分支
git checkout master
合并本地分支和远程分支
# 把本地分支和远程仓库的master这两个不相关,独立的分支合并
git merge --allow-unrelated-histories github/master
在弹出的窗口中修改内容并退出,即为commit的内容
5.不同人修改了不同文件处理方式
不同的人修改了同一个项目的不同文件,且都已经提交到过程仓库时
首先用户A把远程仓库的分支拉取到本地仓库
git fetch github
git branch -av # 查看本地仓库和远程仓库的所有分支信息
在这个时间段内,另一个用户B又在他的分支做修改并提交到远程仓库后,用户A使用 git push github 命令同步本地修改到远程仓库会提示异常
用户A的解决方法:
git fetch github # 拉取远程仓库的分支信息
git merge github/用户B的分支 # 把用户B的分支与本地分支进行合并
git push github # 推送到远程仓库
6.不同人修改了同一个文件的不同区域处理方式
用户A修改某个文件,提交并同步到远程仓库
用户B也修改这个文件,然后commit,在同步到远程仓库时会报错
用户B解决方法:
git fetch
git merge origin/用户A的远程分支 # 用户A修改后提交到哪个分支,就合并哪个分支
git push # 用户B同步分支到远程仓库的指定分支
7.不同人修改了同一个文件的同一区域处理方式
用户A修改某个文件的某一行,提交并同步到远程仓库
用户B也修改这个文件的同一行,然后commit,在同步到远程仓库时会报错
用户B的解决方法:
git pull # 把远程仓库的用户A的修改拉取到本地并合并,会提示 conflict
修改冲突文件,解决冲突
git commit -m "commit message" # 提交修改
git push github # 同步到远程仓库
8.多人协作,同时变更了文件名和文件内容时处理方式
用户A修改文件名,提交并同步到远程仓库
用户B也修改这个文件的内容,然后commit,在同步到远程仓库时会报错
用户B的解决方法:
git pull # 把远程仓库的用户A的修改拉取到本地并合并,会提示修改合并后的提交信息
git push github # 同步到远程仓库
git会自动把用户B的文件名修改成用户A修改后的文件名
9.多人协作,把同一文件修改成两个不同的文件名时的处理方式
用户A修改文件名,提交并同步到远程仓库
用户B也修改这个文件的文件名,然后commit,在同步到远程仓库时会报错
用户B的解决方法:
git pull # 把远程仓库的用户A的修改拉取到本地并合并,并同时显示两个内容相同但文件名不同的文件
git diff file1 file2
git status
git rm file # 这里的file为没有被修改之前的文件名
git add file1 # 把 file1 添加到暂存区
git rm file2 # 删除 file1
git commit -m "commit message"
git push
10.禁止向集成分支执行 push
多人协作开发时,禁止使用的命令,会造成以前提交的信息丢失
git push -f # 强制 push
11.同一台电脑添加多个git密钥
参考gitee网站:Git配置多个SSH-Key
11.1 生成多个网站的公钥和私钥
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitlab_id_rsa
11.2 在~/.ssh 目录下新建一个config文件
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
11.3 用ssh命令分别测试
Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@gitee.com
Warning: Permanently added the ECDSA host key for IP address '120.55.226.24' tothe list of known hosts.
Hi SING890925! You've successfully authenticated, but GITEE.COM does not provide shell access.
Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Hi renpingsheng! You've successfully authenticated, but GitHub does not provideshell access.
Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@gitlab.com
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
Welcome to GitLab, @renpingsheng!
如下图所示

12.打开浏览器查看git帮助文档
git help --web log # 打开浏览器查看git log帮助文档
git的学习笔记(二):git远程操作的更多相关文章
- 代码管理工具 --- git的学习笔记二《git的工作原理》
通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...
- git的学习笔记(一):git本地操作
1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- Git 笔记二-Git安装与初始配置
git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...
- kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- 好代码是管出来的——Git的分支工作流与Pull Request
上一篇文章介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增.提交进行管理,可以查看提交历史.代码差异等功能.但实际上git有一个重量级 ...
- poj 3243 扩展BSGS
每次把gcd(a,c)提到前面,直到a,c互质,然后就是普通BSGS了 #include<cstdio> #include<cstring> #include<iostr ...
- BZOJ_1101_[POI2007]Zap_莫比乌斯反演
题意:FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...
- BZOJ_2435_[Noi2011]道路修建_dfs
BZOJ_2435_[Noi2011]道路修建_dfs 题意: http://www.lydsy.com/JudgeOnline/problem.php?id=2435 分析: dfs搞定. 我怕爆栈 ...
- [NOIP2014]飞扬的小鸟 D1 T3 loj2500 洛谷P1941
分析: 这是一个DP,没什么好说的,细节很烦人. DP[i][j]表示到第i个位置,高度为j点最少的次数. 转移: 当j=m时 k属于[m-h,m]都可以向DP[i][j]转移,即dp[i][j]=m ...
- 设置yum源:
1.企业 阿里开源镜像站: http://mirrors.aliyun.com/ 搜狐开源镜像站: http://mirrors.sohu.com/ 网易开源镜像站: http://mirr ...
- TensorFlow实现分布式计算
摘要: 1.代码例子 内容: 1.代码例子 <TensorFlow实战>实现CNN处理CIFAR10数据,并模拟单机多个CPU同步数据并行计算 <TensorFlow实战>实现 ...
- 你真的知道final关键字吗?
概述 final在英文中是最终的,不可更改的.在Java中final修饰变量,函数和类,就像这个单词的意思,一旦使用赋值之后不可更改. final修饰的变量不可以被改变 finalTest类 publ ...
- 开发教程(四) MIP组件平台使用说明
组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...
- 二维码神器QRCoder
好久没有写Blog,都是因为不小心坠入了爱河,时间都给我家那位了,都没时间加班了(嗨呀,不小心撒了一下狗粮),不过,还是希望单身的赶紧找到心仪的另一半,实在找不到,那就加班啊(开个玩笑,别认真). 二 ...