Git常用操作之远程仓库的管理

83 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 N 天,点击查看活动详情

远程仓库定义

远程仓库是指托管在网络中你的项目的版本库。例如:你在github或者gitee上创建的项目仓库。

查看远程仓库列表git remote

git remote命令会列出每一个远程服务器的简写,origin是git克隆【git clone】远程仓库的时候给代码的源仓库的服务器自动命名的默认简写名称。

-v选项会显示所有远程仓库在Git保存的简写与其对应的URL。

查看某个远程仓库的具体信息git remote show <仓库简写或url>

image.png

执行命令的效果如上图。该命令会列出所有远程仓库的详细列表【简写名称以及url】,并指出本地HEAD指向的分支。

其中Fetch URL表示远程拉取代码的url,Push URL表示推送代码时的URL

zhao tracked表示 远程仓库的zhao分支与当前本地的zhao分支连接成功

up to date表示本地与远程的状态为同步的。

local out of date则表示当前本地项目于远程仓库并不同步。

添加远程仓库git remote add

git remote add <shortname> <url>会添加一个新的远程Git仓库,并且给该仓库起简写名称。

在任何命令中,只要某处要书写远程仓库的链接,那么此处可以用简写来代替。

远程仓库的重命名与移除git remote renamegit remote remove

git remote rename <原名称> <新名称>可以将原来的远程仓库的名称简写改为新的名称简写

git remote [remove | rm] <远程仓库名称>可以将指定的远程仓库移除。

一旦你使用这种方式删除了一个远程仓库,那么所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除。

从远程仓库获取数据git fetch

origin/HEAD指针、FETCH_HEAD与 origin/分支名称

origin/分支名称为远程分支,指的是远程仓库中的分支的引用。

origin/HEAD就是远程仓库中的HEAD指针,表示远程仓库的当前分支的最后一次提交。

FETCH_HEAD指的是某个分支在远程仓库上的最新状态。每一个执行过 git fetch 操作的本地仓库都会存在一个 FETCH_HEAD 列表,这个列表保存在 .git/FETCH_HEAD 文件中。FETCH_HEAD 文件中的每一行对应着远程仓库的一个分支。

作用

git fetch <远程仓库简写或链接>该命令会从该远程仓库中拉取所有工作区中没有的数据,你将会获得该远程仓库中所有分支的引用,可以进行分支的查看与合并。

若是直接运行git fetch则默认拉取origin远程仓库。

git fetch <远程仓库简写或链接> <远程分支名>该命令则会拉取指定远程仓库的指定分支。

远程仓库的内容已经更新,需要将这些更新拉取到本地可以使用该命令。

执行的效果图如下所示:

image.png

当查看历史提交记录时你会发现:git fetch并没有影响到当前目录且无历史记录。这就说明其实该命令并不会修改当前的工作区中的代码。

他是将拉取到的文件存放在本地仓库中,但是他并不会与当前的分支进行合并,也不会修改工作区的代码。

要是想修改工作区的代码,必须使用git merge <指定分支>或git merge FETCH_HEAD将本地的远程分支与当前分支进行合并。

要是此时git remote show origin显示的状态为up to date时。git log会显示下图中的origin/分支,origin/HEAD

image.png

而状态为local out of date时,则不会显示上面说的两个字段。因为此时本地的远程分支版本超前于本地工作区项目的版本。

推送到远程仓库git push

git push <远程仓库简称或链接> <分支>可以将本地提交的文件上传至指定的远程仓库的指定分支中。

只有当你有所克隆服务器的写入权限,并且你的推送已经将之前所有人的推送内容合并过后你才能推送。

句末语

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 N 天,点击查看活动详情