连接本地仓库和Github仓库
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
首先,我们需要在GitHub上创建一个新的仓库。登录到GitHub后,在右上角的加号按钮中找到并点击“new repository”按钮。在弹出的窗口中,为仓库命名为gitlearning
,其他设置保持默认,然后点击“Create repository”按钮。至此,一个名为gitlearning
的新仓库已经在GitHub上成功创建,但此时它是空的。
GitHub提示我们可以从该仓库克隆出一个新的仓库,或者将已有的本地仓库与之关联,并将本地仓库的内容推送到GitHub仓库。这里,我们选择将已经在本地创建并配置好的gitlearning仓库与GitHub上的仓库进行关联。
在本地gitlearning
仓库的目录下,打开命令行工具,并输入以下命令来添加远程仓库:
$ git remote add origin git@github.com:username/gitlearning.git
请确保将上述命令中的username
替换为您自己的GitHub账户名。这样,我们就将远程仓库命名为origin
,这是Git的默认命名方式,但也可以选择其他名称。
接下来,我们可以将本地仓库的所有内容推送到远程仓库。在命令行中输入以下命令:
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 981.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:username/gitlearning.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
执行此命令后,Git将开始将本地master分支的内容推送到远程仓库。推送过程中,Git会计算对象的差异、进行压缩,并将这些对象写入远程仓库。一旦推送成功,远程仓库将与本地仓库保持一致。
由于这是第一次将本地master分支推送到远程仓库,我们使用了-u
参数。这将不仅把本地master分支的内容推送到远程的master分支,还会将本地master分支与远程的master分支关联起来。这样,在未来的推送或拉取操作中,我们可以简化命令。
推送成功后,我们可以在GitHub的页面上立即看到远程仓库的内容已经与本地仓库完全同步。从现在起,每当我们在本地进行提交操作时,只需执行以下命令:
$ git push origin master
就可以将本地master分支的最新修改推送到GitHub上的远程仓库。这样,我们就成功地设置了一个真正的分布式版本库,既可以在本地进行开发和修改,又可以将修改同步到远程仓库进行备份和协作。
SSH警告
当你首次使用Git的clone
或push
命令与GitHub进行交互时,通常会遇到一个关于主机认证的警告信息。这是因为Git通过SSH协议与远程仓库进行通信,而SSH在首次与远程服务器建立连接时,会要求你验证服务器公钥的指纹,以确保你正在连接到的确实是预期的服务器。
这个警告信息表明,Git无法确定github.com
(及其相关的IP地址)的身份是否真实。它会显示RSA密钥的指纹,并询问你是否确信要继续连接。此时,你可以选择输入yes
并按回车,表示你信任这个服务器的身份,并希望Git将它的公钥添加到已知主机列表中。
一旦你确认并输入yes
,Git会输出一条警告信息,告诉你github.com
的RSA密钥已被永久添加到已知主机列表中。这意味着在未来的连接中,你将不再收到此警告,因为Git已经记住了这个服务器的公钥。
如果你对安全性有高度关注,担心有人可能冒充GitHub服务器,那么在输入yes
之前,你可以对照GitHub官方提供的RSA密钥指纹信息,以确保SSH连接所显示的信息与之一致。这样,你可以确保你的连接是安全的,并且确实与GitHub的服务器建立了连接。
删除远程库
如果你在添加远程仓库时输入了错误的地址,或者出于某种原因想要解除本地仓库与远程仓库的关联,你可以使用git remote rm <name>
命令。在执行此操作之前,为了确认当前配置的所有远程仓库信息,建议首先使用git remote -v
命令查看。
运行git remote -v
后,你将看到类似以下的输出,显示了所有配置的远程仓库及其对应的URL:
$ git remote -v
origin git@github.com:username/gitlearning.git (fetch)
origin git@github.com:username/gitlearning.git (push)
在这个例子中,origin
是远程仓库的名称,而后面的URL则是与之关联的地址。如果你想要删除名为origin
的远程仓库,可以执行以下命令:
$ git remote rm origin
请注意,这里的“删除”操作实际上只是解除了本地仓库与远程仓库之间的绑定关系,并不会物理上删除远程仓库本身或其包含的数据。远程仓库依然存在于GitHub等托管服务上,只是本地仓库不再与之关联。如果你想要彻底删除远程仓库,你需要登录到相应的托管服务(如GitHub),并在其后台页面中找到相应的删除按钮来执行删除操作。