tortoisegit 本地仓库与远程仓库关联_远程库


文章目录

  • 1 本地库和远程库
  • (1) 建立本地库
  • (2) 建立远程库
  • 2 本地库管理远程库的基本操作
  • 2.1 本地库推送(push)到远程库(GitHub)
  • 2.2 远程库克隆(clone)到本地库
  • 2.3 远程库拉取(pull)到本地库
  • 3 团队协作开发和跨团队协作开发(开源项目)
  • 参考资料




注:转载请标明原文出处链接:

本地库(Git仓库)可以管理远程库(GitHub),一般地操作有pull, clone 和pull 操作,在实际协作开发项目是一般会有两种情况:

第一种是团队之间互相认识,共同开发项目。这样可以建立私人项目或者公开项目,然后邀请项目成员共同开发,这样其他人将看不到团队的项目。
例如:如下图所示,开发者A在GitHub上新建仓库,接着新建一个分支然后邀请团队成员开发者B在这个分支上提交代码。开发者B在本地库写好的项目代码推送到远程库的分支上,然后可以发送请求给开发者A,要求审核代码并合并分支,开发者A可以将代码拉取下来查看。如果觉得代码可以,那么直接合并代码即可,如果觉得代码不可以,要求开发者B进行修改知道合格为止。

第二种是开源的项目,全网都可以看到,任何开发者都可以对你的项目提出建议和修改,达到共同开发的目的。
例如:如下图所示,开发者A在GitHub上新建仓库,然后开发者C在GitHub上无意间看到了这个仓库,觉得挺好就Fork该仓库,于是开发者C就会出现该仓库。开发者C将这个仓库拉取(pull)本地库进行改进然后推送(push)到自己的远程库上,此时开发者A的仓库不会变化。
如果开发者C想要将自己的代码合并到开发者仓库中就要提出请求,然后开发者A进行审核,如果通过开发者A觉得可以就进行合并。

tortoisegit 本地仓库与远程仓库关联_git_02



以上两种情况和GitHub协同开发基本类似,不同的是本地库和远程库之间需要进行拉取(pull)和推送(push)操作,pull和push操作也是本地库管理远程库的关键。下面就简单介绍本地库文件推送(push)到远程库、远程库文件拉取(pull)到本地库等基本操作。


1 本地库和远程库

本地库就是开发者将文件提交到Git仓库,此时Git仓库文件还在本地电脑。通过Git仓库可以管理GitHub远程仓库,例如Git仓库可以推送到GitHub仓库上,共享到社区,其他开发者可以看到这个仓库,然后可以提出Bug和改进建议达到共同开发的目的。



(1) 建立本地库

开发者A新建develop_A文件夹,然后通过git命令初始化,接着新建test_hello.cpp文件提交到本地库。如下图所示:

tortoisegit 本地仓库与远程仓库关联_Git_03


(2) 建立远程库

开发者A在GitHub上新建一个项目(teamwork), 如下图所示:

tortoisegit 本地仓库与远程仓库关联_远程库_04



如下图所示,复制teamwork仓库地址:https://github.com/luohuayouyi666/teamwork.git

tortoisegit 本地仓库与远程仓库关联_Git_05


2 本地库管理远程库的基本操作

2.1 本地库推送(push)到远程库(GitHub)



本地库推送到远程库命令格式为:git push origin分支名



现在开发者A将本地库推送到GitHub仓库上, 由前面的操作可知,teamwork仓库的地址为:
https://github.com/luohuayouyi666/teamwork.git

由于地址太长不太好操作,可以用一个简单的名称(别名origin)代替复较长的地址,
起别名的命令为格式为:git remote add origin 远程库地址

例如:git remote add origin https://github.com/luohuayouyi666/teamwork.git 如下图所示,还可以通过命令:git remote -v 查看当前的别名 判断新名称(别名)是否更新成功。



tortoisegit 本地仓库与远程仓库关联_本地库_06



注意:
更改远程地址别名命令:git remote add origin GitHub仓库地址删除本地指定的远程地址别名命令:git remote remove origin



例如使用命令:git push origin master 表示将本地库master分支下文件推送到远程库
执行命令后,如下图所示,推送报错,是因为远程库一个README.md文件在本地库没有,此时需要将远程库README.md拉取(pull)到本地库(更新),然后再推送到远程库。



tortoisegit 本地仓库与远程仓库关联_本地库_07



网上查询的解决办法,执行命令:git pull origin master --allow-unrelated-histories 结果如下图所示:

tortoisegit 本地仓库与远程仓库关联_Git_08



接下来将本地库推送到远程库,结果如下图所示:

tortoisegit 本地仓库与远程仓库关联_git_09



此时刷新网页,查看GitHub仓库有没有更新文件,如下图所示,文件成功的从本地库提交到远程库。

tortoisegit 本地仓库与远程仓库关联_远程库_10


2.2 远程库克隆(clone)到本地库



远程库克隆(clone)到本地库命令格式为:git clone 远程仓库地址

任何开发者都可以将GitHub上的开源的项目克隆到本地仓库。例如,前面操作的远程仓库有了两个文件,如下图所示:



tortoisegit 本地仓库与远程仓库关联_Git_11



下面新建文件夹test_clone文件夹,使用命令:git clone 远程仓库地址 将远程仓库文件下载下来,如下图所示:

tortoisegit 本地仓库与远程仓库关联_git_12



远程库克隆到本地库的效果:

  1. 完整的把远程库下载到本地库;
  2. 初始化本地库;


2.3 远程库拉取(pull)到本地库



远程库拉取(pull)到本地库命令格式为: git pull origin master ,origin为远程库地址的别名。

将远程库文件更新到本地库,本地工作区文件将会更新,如果本地有和远程库同名的文件,将会强制更新本地库文件。

例如新建test_pull文件,新建123.txt文件,然后提交到本地库,如下图所示:

tortoisegit 本地仓库与远程仓库关联_远程库_13



将远程库地址更改别名(git remote add origin 远程库地址),然后执行命令:git pull origin master

tortoisegit 本地仓库与远程仓库关联_git_14



此时发现,pull失败,因为本地库有和远程库不相同的文件,此时可以通过命令:git pull origin master --allow-unrelated-histories 强制拉取(pull)

tortoisegit 本地仓库与远程仓库关联_本地库_15



下面将本地库文件全部推送到远程库,命令为:git push origin master ,结果如下图所示

tortoisegit 本地仓库与远程仓库关联_git_16



此时刷新网页,查看GitHub仓库中123.txt文件成功的从本地库提交到远程库,如下图所示:

tortoisegit 本地仓库与远程仓库关联_Git_17



假设在GitHub仓库中更改文件内容,此时本地库内容没有变,现在然后从将远程库拉取(pull)到本地库,看看会不会强制更新本地库文件内容。

tortoisegit 本地仓库与远程仓库关联_本地库_18



tortoisegit 本地仓库与远程仓库关联_本地库_19



tortoisegit 本地仓库与远程仓库关联_Git_20



tortoisegit 本地仓库与远程仓库关联_远程库_21



由上图可以看出,远程库123.txt文件被修改,此时将远程库拉取到本地库,执行命令:git pull origin master ,结果如下图所示,本地库123.txt文件被更新了。

tortoisegit 本地仓库与远程仓库关联_远程库_22



当然也可以通过命令: git fetch origin master 将远程库文件抓取到本地库缓存区,此时本地库和工作区文件并没有被合并,
通过命令:git checkout origin/master 切换到本地库缓存的分支上,然后通过命令: cat 文件名 来查看文件内容
。