文章目录
- 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觉得可以就进行合并。
以上两种情况和GitHub协同开发基本类似,不同的是本地库和远程库之间需要进行拉取(pull)和推送(push)操作,pull和push操作也是本地库管理远程库的关键。下面就简单介绍本地库文件推送(push)到远程库、远程库文件拉取(pull)到本地库等基本操作。
1 本地库和远程库
本地库就是开发者将文件提交到Git仓库,此时Git仓库文件还在本地电脑。通过Git仓库可以管理GitHub远程仓库,例如Git仓库可以推送到GitHub仓库上,共享到社区,其他开发者可以看到这个仓库,然后可以提出Bug和改进建议达到共同开发的目的。
(1) 建立本地库
开发者A新建develop_A文件夹,然后通过git命令初始化,接着新建test_hello.cpp
文件提交到本地库。如下图所示:
(2) 建立远程库
开发者A在GitHub上新建一个项目(teamwork), 如下图所示:
如下图所示,复制teamwork仓库地址:https://github.com/luohuayouyi666/teamwork.git
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
查看当前的别名 判断新名称(别名)是否更新成功。
注意:
更改远程地址别名命令:git remote add origin GitHub仓库地址
删除本地指定的远程地址别名命令:git remote remove origin
例如使用命令:git push origin master
表示将本地库master分支下文件推送到远程库
执行命令后,如下图所示,推送报错,是因为远程库一个README.md文件在本地库没有,此时需要将远程库README.md拉取(pull)到本地库(更新),然后再推送到远程库。
网上查询的解决办法,执行命令:git pull origin master --allow-unrelated-histories
结果如下图所示:
接下来将本地库推送到远程库,结果如下图所示:
此时刷新网页,查看GitHub仓库有没有更新文件,如下图所示,文件成功的从本地库提交到远程库。
2.2 远程库克隆(clone)到本地库
远程库克隆(clone)到本地库命令格式为:git clone 远程仓库地址
任何开发者都可以将GitHub上的开源的项目克隆到本地仓库。例如,前面操作的远程仓库有了两个文件,如下图所示:
下面新建文件夹test_clone文件夹,使用命令:git clone 远程仓库地址
将远程仓库文件下载下来,如下图所示:
远程库克隆到本地库的效果:
- 完整的把远程库下载到本地库;
- 初始化本地库;
2.3 远程库拉取(pull)到本地库
远程库拉取(pull)到本地库命令格式为: git pull origin master
,origin为远程库地址的别名。
将远程库文件更新到本地库,本地工作区文件将会更新,如果本地有和远程库同名的文件,将会强制更新本地库文件。
例如新建test_pull文件,新建123.txt文件,然后提交到本地库,如下图所示:
将远程库地址更改别名(git remote add origin 远程库地址
),然后执行命令:git pull origin master
此时发现,pull失败,因为本地库有和远程库不相同的文件,此时可以通过命令:git pull origin master --allow-unrelated-histories
强制拉取(pull)
下面将本地库文件全部推送到远程库,命令为:git push origin master
,结果如下图所示
此时刷新网页,查看GitHub仓库中123.txt文件成功的从本地库提交到远程库,如下图所示:
假设在GitHub仓库中更改文件内容,此时本地库内容没有变,现在然后从将远程库拉取(pull)到本地库,看看会不会强制更新本地库文件内容。
由上图可以看出,远程库123.txt文件被修改,此时将远程库拉取到本地库,执行命令:git pull origin master
,结果如下图所示,本地库123.txt文件被更新了。
当然也可以通过命令: git fetch origin master
将远程库文件抓取到本地库缓存区,此时本地库和工作区文件并没有被合并,
通过命令:git checkout origin/master
切换到本地库缓存的分支上,然后通过命令: cat 文件名
来查看文件内容
。