文章目录
前言
前情提要:Git应用详解第四讲:版本回退的三种方式与stash
这一节将会介绍本地仓库与远程仓库的一些简单互动以及几款常用的Git
图形化界面,让你更加方便地使用git
。
一、Git
裸库
简单来说git
裸库就是没有工作区的git
仓库。比如服务器,只起到代码托管的作用而不需要也不应该修改服务器上的代码。
可通过以下指令创建git
裸库:
git init --bare
创建完成之后,查看当前文件目录:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CR4bKAJC-1586965022559)( http://ahuntsun.gitee.io/blogimagebed/img/git/lesson5/1.png)]
可以看到并不存在工作区目录,表明git
裸库仅仅是用来存放和中转开发者提交的代码。
二、本地仓库与远程版本库
- **本地仓库:**也就是之前所讲的
git
仓库,分为三个区:工作区,暂存区和版本库; - 远程版本库:与本地版本库相对应的远程在线版本库,属于裸库;
我们一般会在本地git
仓库的工作区和暂存区中对文件进行修改,然后提交到本地版本库,并最终推送到远程版本库进行托管。整个流程如下图所示:
远程仓库的实质就是本地仓库中的版本库对应的远程版本库,通常直接叫做远程仓库。
远程仓库(版本库)的存在作用为:供多台计算机间交换信息,相当于交换两个数过程中的第三方容器。
1.git push
与git pull
这两个命令是我们使用远程仓库时非常常用的命令,它们十分的重要:
-
git push
:将本地仓库某分支上的代码推送到远程仓库的某分支上;注意了,推送操作是分支对分支的,而不是将本地仓库的所有分支都推送到远程仓库,如下图所示(假设推送到远程同名分支): -
git pull
:将远程仓库文件拉取到本地版本库,也就是将本地仓库中没有的文件都拉取到本地仓库的版本库中,所以进行拉取操作后,本地仓库的工作区是干净的:这里的
st
为status
的别名,有关别名的内容,后续会进行详细讲解。
push
指令的完整写法:
git push origin srcBranch:destBranch
其中srcBranch
表示的是本地分支,destBranch
表示的是远程分支;
pull
指令的完整写法:
git pull origin srcBranch:destBranch
其中srcBranch
表示的是远程分支,destBrach
表示的是本地分支;
不要混淆了,可以这样理解:srcBranch
表示从哪里来,destBranch
表示到哪里去;
git push
的三种情况
-
**情况一:**只有一个用户操作远程仓库时,由于本地仓库对所有的文件和操作都进行了追踪,所以即使本地仓库删除之前推送到远程仓库的文件,再次执行推送时也不需要执行
git pull
操作。例如,远程仓库有这么些文件:
在对应的本地仓库中将其他文件删除,只留下
README.md
,此时再向该远程仓库推送。推送过程十分顺利,并不需要执行git pull
操作拉取合并远程仓库中的文件。 -
**情况二:**也是只有一个用户操作远程仓库,但是不通过本地推送来更新远程仓库,而是直接为远程仓库添加文件,比如手动添加
README.md
。这个时候,由于本地仓库并没有对远程仓库中新增的
README.md
进行追踪,所以再次推送时会出现如下错误:此时需要执行
git pull
操作对远程仓库中新增的文件进行拉取、合并与追踪,之后才能进行git push
。 -
**情况三:**多人共用同一远程仓库,比如用户
A
和B
,这个时候由于远程仓库上有A
提交的而B
没有的文件。所以B
在执行git push
前,要先执行git pull
操作,将远程仓库中这些没有的文件进行拉取、合并与追踪。
git pull
实质
在进行拉取操作的过程中,会执行合并