Git远程协作和分支
一、远程基本操作
基本的配置远程仓库有两个命令:
git remote add origin git@github.com:ZXZxin/gitlearn.git;git push -u origin master;
这里先演示环境搭建,也就是和github上一个仓库远程关联起来,这里遇到了一些坑,记录一下:

坑解决的两篇文章:
- https://blog.csdn.net/yemoweiliang/article/details/52980658
- https://blog.csdn.net/uotail/article/details/80211897
- https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html
普及:
- 可以使用
git remote show origin,查看详细的远程remote信息(注意origin是一个别名,不一定要这个名字) git commit am '....'只会将已经纳入版本库的文件add并提交,新增的文件不会add。
二、协作
一开始master和origin/master一样。

然后我们需要再调用一次git push来同步远程,这样id就会相同了。

解释:
git内部会自己维护origin/master这个分支,我们不能操作,但是可以执行git checkout origin/master,虽然这个命令不会报错,但是我们实际上只是切换到了提交的那个点(commit-id)的位置上,也就是和之前那个游离的状态一样。我们可以在这个commit-id位置上进行修改,但是切换的时候要先stash一下。
来看一下上面的原理和过程:
初始状态:

然后我们调用了增加或者修改元素,调用git add和git commit之后(这时候还没有push),就会变成下面这样: (这时候git会告诉我们master比origin/master提前了一步)

然后我们调用git push,注意这个过程做了两步:
- 将本地的内容push到远程了;
- 将
origin/master由上面的①指向了②;

三、Git协作实战
模拟环境:
- 有两个人协作,一个张三,一个李四,张三的仓库就是我们之前用的那个
gitlearn,李四是直接从张三的远程仓库git clone下来的; - 然后我们再将张三的
gitlearn和李四的gitlearn2都设置一下user.name和user.email;
李四先git clone下来:

然后将张三和李四的用户名和密码配置一下:

现在我们在gitlearn添加一个c.txt文件,然后git push到远程仓库,然后在gitlearn2这边输入git remote show origin来查看区别:

remotes/origin/HEAD -> origin/master啥意思呢?
在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用(远程仓库名)/(分支名)这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地)
也就是origin/master是用来追踪远程分支的。
然后我们在gitlearn2里面执行git pull,将远程的最新更新拉去过来。查看最新的更新信息。

上图的过程:

下面展示会发生冲突的情况:
- 张三先修改了
a.txt的第二行,然后push到了远程; - 李四也修改了
a.txt的第二行,然后也想push到远程,就会报错;

此时李四要先git pull。
现在展示李四的操作:

但是此时还不够,我们需要调用git add来标识已经解决了冲突;

总结
git add的三个作用:
- 将未追踪的文件(新建的文件)加入到暂存区;
- 将已追踪的文件(修改的文件)加入到暂存区;
- 解决完冲突之后,调用
git add标识这个文件已经解决了冲突(git merge的时候)。
此时我们还需要将解决冲突之后的代码git push 到远程.

整个过程的流程:

一般在
git push之前都要进行git pull操作。git pull = git fetch + git merge。
git fetch会直接将代码拉到origin/master,但是和当前本地的master不会冲突。但是git merge就会产生冲突。
下面展示分别使用git fetch和git merge来操作:
先使用git fetch,不会产生冲突:

接下来我们在李四这边使用git merge手动解决冲突并push:

最后在张三也进行git pull即可。
关于远程git分支,远程(注意不是本地分支)通常有如下几种:
- 1、
master分支: 很稳定的分支; - 2、
test分支: 测试分支; - 3、
develop分支: 变化最频繁的分支;s - 4、
hotfix分支: 紧急bug需要修复;
原文:Java架构笔记
免费Java高级资料需要自己领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q
Git远程协作和分支的更多相关文章
- git远程上的分支到本地
先想一个自己要在本地新建的分支名称,qianjinyan git checkout -b qianjinyan origin/SELLER-2248-1018 git branch 查看分支 git ...
- Git远程和分支管理
一.远程 Git是分布式版本控制系统,最重要的优点就是远程仓库托管代码.不用自己搭建一个服务器,在github上面注册一个账户就可免费获取远程仓库. 首先需要先在github上面 ...
- Git入门——远程仓库及分支管理
关于本地版本库的操作,请见:Git入门--本地版本库操作 本篇提到的所有命令: 小结 前面提到,Git相对于传统的SVN有着很大的优势,其中之一就在于集中式系统中,版本库只能存在于中央服务器上:而在G ...
- Git远程推送和抓取分支
查看远程库信息 当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin.要查看远程库的信息,用git remote,或 ...
- git推送本地分支到远程分支
场景 有时候我们开发需要开一个分支,这样可以有效的并行开发. 开分支有两种方式: 一种是在远程开好分支,本地直接拉下来; 一种是本地开好分支,推送到远程. 远程先开好分支然后拉到本地 git chec ...
- 如何删除git远程分支
1,在开发过程中,大家在远程创建了许多分支,有些是无用的,该如何删除呢,可以参考下面的方法. 如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放 稳 ...
- git 远程分支创建与推送
git 远程分支创建与推送 原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html 本地分支的创建 本 ...
- git 本地给远程仓库创建分支 三步法
命令如下: 1:本地创建分支dev Peg@PEG-PC /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 Peg@ ...
- Git 远程分支的pull与push
Git 远程分支的pull与push 远程分支信息查看 git branch -r #查看远程分支 git branch -a #查看所有分支,本地和远程 git remote show [remot ...
随机推荐
- [PHP] substr占用内存谨慎使用
在下面的场景中使用substr的时候, 有时候会报超出内存fatal error ,当curl读取的内容过大的时候 $header_size = curl_getinfo($curl_handle, ...
- 链接(url)中不能有汉字,遇到汉字,需要使用quote转换之后使用
from urllib.parse import quotename=quote("翻译")print(name)
- 201871010121-王方-《面向对象程序设计java》第十六周实验总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...
- 201871010135 张玉晶《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/12000 ...
- chm帮助文档显示字体过小
问题描述: 在查看chm帮助文档时,发现默认显示字体过小,阅读吃力 解决方案: 1. 点击选项按钮->Internet 选项 2. 点击辅助功能 3. 选中 忽略网页上指定的字号,点击确定 最后 ...
- javaConfig下的springmvc配置
javaConfig下的springmvc配置 一.静态资源过滤 XML的配置 <mvc:resources mapping="/**" location="/&q ...
- MyBatis Plus 将查询结果封装到指定实体
MyBatis Plus 将查询结果封装到指定实体 思路 自定义方法,使用Wrapper,自定义映射结果集 Mapper接口 package com.mozq.boot.mpsand01.dao; i ...
- JDOJ 1044 Span
JDOJ 1044 Span https://neooj.com/oldoj/problem.php?id=1044 Description 某国有N个村子,M条道路,为了实现“村村通工程”现在要”油 ...
- JDOJ 1790: 高精度A-B
JDOJ 1790: 高精度A-B JDOJ传送门 洛谷 P2142 高精度减法 洛谷传送门 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) ...
- USACO Score Inflation
洛谷 P2722 总分 Score Inflation https://www.luogu.org/problem/P2722 JDOJ 1697: Score Inflation https://n ...