Git使用教程(四)--远程仓库

这篇教程详细介绍了Git远程仓库的管理,包括查看、添加、删除远程仓库,以及拉取、推送代码和同步分支的操作。通过实例解析,帮助用户在多人协作中高效使用Git。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在多人协同开发中,一般来说不同的人员有不同的权限,有的人员只有可读权限, 有的具有读写权限,此时只有只读权限的人员应该怎么贡献代码呢? 亦或是项目有多个协作的远程地址,又应该如何管理这些远程仓库来进行协作呢?

Git作为一个分布式的版本管理系统,相对于集中式的版本控制,如SVN等,在此时就体现出了强大的趋势——Git的多远程仓库。远程仓库说简单点就是网络上的项目仓库,可能会有多个。下面就一起来看看怎么使用远程仓库以及如何解决前面我们抛出的问题:

1、查看远程仓库

当我们克隆一个远程的仓库(这里使用的仓库地址是:演示仓库地址)到本地后,当前的项目就已经生成了一个名为origin远程仓库,地址则是指向我们克隆的地址。(什么?还不知道怎么克隆项目?戳我了解)我们可以使用git remote进行查看:

$ git remote
origin

说明我们已经有一个名字为origin的远程仓库了。如果想查看仓库的地址,使用git remote -v 进行查看:

$ git remote -v
origin  https://github.com/gavincook/test.git (fetch)
origin  https://github.com/gavincook/test.git (push)

如果有多个远程仓库,这里会将所有的远程仓库罗列出来,比如我们添加一个名字为myFork远程仓库(具体添加过程后面讲述):

$ git remote -v
myFork  https://github.com/AntStudio/test.git (fetch)
myFork  https://github.com/AntStudio/test.git (push)
origin  https://github.com/gavincook/test.git (fetch)
origin  https://github.com/gavincook/test.git (push)

可以看到这里吧origin和myFork都罗列出来了。

2、添加远程仓库

我们这里设想一个场景,在多人协作开发中,原始仓库(origin)控制了权限,我们只有只读权限(也即只能拉取不能推送),这个时候我们应该怎么样不改变原始仓库的权限分配参与协作呢?这时候一般我们会将项目fork到自己的用户空间下,点击项目主页右上角的fork按钮即可。
fork项目
比如我这里fork到了AntStudio账户空间下,在AntStudio下面就会存在一个test的项目,如图:
fork项目
我们对于自己的用户空间的项目具有读写权限,因此我们可以将代码推送到我们的fork上,通过创建pull request的方式,让项目管理员进行合并。项目fork后,我们需要将fork后的仓库地址添加到本地项目中,以便我们可以推送代码。
我们可以使用git remote add [remoteName] [url]来添加远程仓库,其中remoteName为远程仓库的名字,url为远程仓库的地址:

$ git remote add myFork https://github.com/AntStudio/test.git

这样我们就完成了远程仓库的添加,使用git remote -v查看就能看到名字为myFork的远程仓库,如第一点最后所见。

3、查看远程仓库的详细信息

第一点中,我们使用git remote -v查看了当前都有哪些远程仓库。对于具体某一个远程仓库,我们可以使用git remote show [remoteName]来查看仓库的具体信息:

$ git remote show myFork
* remote myFork
  Fetch URL: https://github.com/AntStudio/test.git
  Push  URL: https://github.com/AntStudio/test.git
  HEAD branch: master
  Remote branch:
    master new (next fetch will store in remotes/myFork)
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

这里我们可以看到有远程仓库的拉取和推送的地址,Remote branch会罗列远程仓库的分支哪些没有同步到本地(这里可以看到master没有被同步到本地),哪些分支已经同步,哪些分支远程已经删除本地还存在的。最后一个关于git push的,fast-forwardable这一行表示的是,我们使用git push时,默认是处理哪个分支。

4、从远程仓库拉取

git fetch [remoteName]允许从远程仓库中拉取所有该仓库的更新,remoteName为远程仓库的名字,如果忽略不写则表示origin,也即clone时候的仓库。此外还可以使用git remote update [remoteName]来拉取更远程仓库的所有更新,如果不指定remoteName则表示拉取所有的远程仓库的更新。注意,git fetchgit remote update只会拉取服务器的更新,不会自动合并到本地分支。如果需要让本地的分支跟踪,可以使用git pull [remoteName] branchName

5、推送到远程仓库

我们使用git push推送代码到远程仓库,具体语法为:git push [remoteName] localBranchName:remoteBranchName 其中localBranchName代表本地分支,remoteBranchName代表远程分支,远程分支可以省略,当不指定远程分支时,远程分支名字和本地分支名字一致。也即git push [remoteName] localBranchName等同于git push [remoteName] localBranchName:localBranchName

6、删除远程仓库分支&&同步分支

第五点简单表述了代码推送,而git push还可以实现删除远程分支。当我们省略localBranchName时,则可以 推送一个空的分支到远程分支上,来达到删除远程分支。比如删除一个叫test的分支,可以使用git push myFork :test
当别人删除了远程分支时,我们需要将本地对改分支更新分支(git remote show [remoteName]查看),也即remoteName/branchName分支删除以和仓库同步。可以使用git remote prune remoteName,remoteName远程仓库名字,可以有多个,相互直接用空格相隔。

7、重命名或删除远程仓库

突然有一天,发现之前的仓库名名字取得太难听了,想换下,咋办?难道要删掉项目重新来过吗?当然不用,使用
git remote rename oldRemoteName newRemoteName,这样就可以快速给仓库换个更酷炫的名字。如果想修改下一个仓库的地址,则可以使用:
git remote set-url remoteName newUrl,这样就把仓库的地址修改为了${newUrl}了。
那要是不想要这个远程仓库了呢,
git remote remove remoteName,试试这个命令,然后再用git remote -v看看,是不是这个仓库消失了呢。

小结:本文通过实际的操作,描述了远程仓库的常用操作。希望能帮助大家更好的使用Git来服务我们的协作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值