Git远程协做和分支

1、远程基本操做

基本的配置远程仓库有两个命令:html

  • git remote add origin git@github.com:ZXZxin/gitlearn.git
  • git push -u origin master

这里先演示环境搭建,也就是和github上一个仓库远程关联起来,这里遇到了一些坑,记录一下:java



坑解决的两篇文章:

普及:
git

  • 可使用git remote show origin,查看详细的远程remote信息(注意origin是一个别名,不必定要这个名字)
  • git commit am '....'只会将已经归入版本库的文件add并提交,新增的文件不会add


2、协做

一开始masterorigin/master同样。github



而后咱们须要再调用一次git push来同步远程,这样id就会相同了。架构



解释:并发

git内部会本身维护origin/master这个分支,咱们不能操做,可是能够执行git checkout origin/master,虽然这个命令不会报错,可是咱们实际上只是切换到了提交的那个点(commit-id)的位置上,也就是和以前那个游离的状态同样。咱们能够在这个commit-id位置上进行修改,可是切换的时候要先stash一下。分布式

来看一下上面的原理和过程:高并发

初始状态:测试



而后咱们调用了增长或者修改元素,调用git addgit commit以后(这时候尚未push),就会变成下面这样: (这时候git会告诉咱们masterorigin/master提早了一步)fetch



而后咱们调用git push,注意这个过程作了两步:

  • 将本地的内容push到远程了;
  • origin/master由上面的指向了



3、Git协做实战

模拟环境:

  • 有两我的协做,一个张三,一个李四,张三的仓库就是咱们以前用的那个gitlearn,李四是直接从张三的远程仓库git clone下来的;
  • 而后咱们再将张三的gitlearn和李四的gitlearn2都设置一下user.nameuser.email

李四先git clone下来:



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



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



remotes/origin/HEAD -> origin/master 啥意思呢?
在clone完成以后,Git 会自动为你将此远程仓库命名为 originorigin只至关于一个别名,运行 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 fetchgit merge来操做:

先使用git fetch,不会产生冲突:



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



最后在张三也进行git pull便可。

关于远程git分支,远程(注意不是本地分支)一般有以下几种:

  • 一、master分支: 很稳定的分支;
  • 二、test分支: 测试分支;
  • 三、develop分支: 变化最频繁的分支;s
  • 四、hotfix分支: 紧急bug须要修复;

原文:Java架构笔记

免费Java高级资料须要本身领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门: mp.weixin.qq.com/s/JzddfH-7y…
相关文章
相关标签/搜索