Skip to content

20210108关于本地git与远程仓库关联的创建与取消(3)git的关联与解除关联操作

ziyouzy edited this page Jan 13, 2021 · 1 revision

之前我们总结出,ssh的密钥和git本地仓库对远程仓库同步是两个互不相关的技术

现在我们可以正式来探讨git本身的本地&远程的相关操作了

而最为典型,也是最有实操&实验价值的操作正是关联与解除关联的操作

目光投向github最初的mylib项目,我最早进行过关联,从而实现数据同步

而现在本地拥有三个他的仓库副本,是否他们都依然与远程仓库存在关联关系呢?

首先我们从关联语句来分析:

git remote add origin [email protected]:YotrolZ/helloTest.git

从语句上看,表面上是一个本地仓库只能去对接一个远程仓库

但是如果写多条语句,确实可以让一个本地仓库关联多个远程仓库

同时如果两个本地仓库执行同一条语句,也可以实现两个本地仓库关联了同一个远程仓库,因此,还是需要更多的实操试验

1.在github上建立了三个仓库,分别是test1,test2,test3

2.在宿主机上先安装git:

sudo apt-get install git

3.安装后需要进行类似论坛用户名与密码的创建操作,否则会报如下错误:

Please tell me who you are.

Run

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'zqy@ubuntu.(none)')

需执行以下两条语句,从而让当前主机/宿主机完成对git的初始化配置:

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

4.之后git init,写几行代码,再进行add -A和commit -m“”

5.正式开始实现关联:

git remote add origin [email protected]:ziyouzy/test1.git
git remote add origin [email protected]:ziyouzy/giteetest1.git
从而实现同一个本地仓库与两个远程仓库的关联以及数据的同步与备份

6.这里设计到一个知识点,那就是每次的push操作都是针对某一个分支的操作,可能是主分支,也可能不是,一篇文章做了如下说明:

"Git分支管理
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成
第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了
如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作
而你在自己的分支上干活,想提交就提交,直到开发完毕后
再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。"

可以得出结论:一个“本地”仓库会对应一个“远程”仓库,上传代码的时候往往只会上传某个“分支”,可以是“主分支”也可以不是“主分支”

可以设想一个应用场景,如nodedobuilder和alarmbulider是我和另一个程序员同时完成

我们都要借助主函数来实现该模块与整体之间的联动,于是除了该板模块,也会修改整体模块的代码,如main.go以及conf包

显而易见的,最不适合的是不用git,否则根本没法做到开发同步

同时如果只是另一个程序员创建了分支并在该分支上操作,而我依然继续使用主分支开发,这样的话首先就会在整体流程逻辑上不正确,因为凭什么他在分支上开发,而你却在主分支上开发,这是流程逻辑上的不平等

同时对于在主分支上开发的程序员来说,他的开发很可能会影响最初的状态,以至于让在子分支开发的程序员提心吊胆的,害怕最终无法合并

更重要的是,子分支是基于一个固定节点的主分支开发的,而我却一直将这个主分支更新,就算最后子分支程序员能和最新版本的主分支合并成功并运行代码,要是出了问题怎么查,算谁的

子分支程序员是不可能信任整体项目的

-----------

回到主题,git remote add origin [email protected]:ziyouzy/xxx.git遇到了问题:

fatal: remote origin already exists.

也就是说一个本地仓库原则上只能绑定一个远程仓库,可以用如下指令查看关联:

git remote -v 

存在如下显示:

origin  [email protected]:ziyouzy/test1.git (fetch)
origin  [email protected]:ziyouzy/test1.git (push)

这里基于这种机制系统的分析下我的旧mylib仓库的问题,单开一篇文章

Clone this wiki locally