基本的配置远程仓库有两个命令: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
。一开始master
和origin/master
同样。github
而后咱们须要再调用一次git push
来同步远程,这样id
就会相同了。架构
解释:并发
git
内部会本身维护origin/master
这个分支,咱们不能操做,可是能够执行git checkout origin/master
,虽然这个命令不会报错,可是咱们实际上只是切换到了提交的那个点(commit-id
)的位置上,也就是和以前那个游离的状态同样。咱们能够在这个commit-id
位置上进行修改,可是切换的时候要先stash
一下。分布式
来看一下上面的原理和过程:高并发
初始状态:测试
而后咱们调用了增长或者修改元素,调用git add
和git commit
以后(这时候尚未push
),就会变成下面这样: (这时候git会告诉咱们master
比origin/master
提早了一步)fetch
而后咱们调用git push
,注意这个过程作了两步:
origin/master
由上面的①
指向了②
;模拟环境:
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
分支,远程(注意不是本地分支)一般有以下几种:
master
分支: 很稳定的分支;test
分支: 测试分支;develop
分支: 变化最频繁的分支;shotfix
分支: 紧急bug须要修复;原文:Java架构笔记
免费Java高级资料须要本身领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门: mp.weixin.qq.com/s/JzddfH-7y…