手记

操作远程仓库

远程仓库

远程仓库是指托管在网络上的版本库。
通常情况下,在执行 git clone 一个仓库的时候,就会自动将 URL 添加为远程仓库地址并命名为 “origin”。

查看远程仓库
git remote

运行该指令, 会列出已经添加的远程仓库的名字,至少能看到 origin。
指定选项 -v,会显示远程仓库的名字与其 URL。

$ git remote -v
origin  https://github.com/AttitudeToLife/test.git (fetch) # 更新到本地仓库的URL
origin  https://github.com/AttitudeToLife/test.git (push) # 推送到远程仓库的URL

如果想查看某一个远程仓库的更多信息,可以使用下面的指令:

git remote show [remote-name]

例子:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/AttitudeToLife/test.git
  Push  URL: https://github.com/AttitudeToLife/test.git
  HEAD branch: main # 主分支
  Remote branches: # 远程仓库的分支列表
    main                      tracked # 远程仓库的分支列表
    refs/remotes/origin/test3 stale (use 'git remote prune' to remove)
    test1                     tracked
    test2                     new (next fetch will store in remotes/origin)
  Local branches configured for 'git pull':
    main  merges with remote main
    test1 merges with remote test1
    test3 merges with remote test3
  Local refs configured for 'git push':
    main  pushes to main  (up to date)
    test1 pushes to test1 (up to date)

1、在远程仓库的分支列表中,tracked 状态表示分支已被跟踪,可以正常将本地分支与远程分支进行同步。
2、stale (use ‘git remote prune’ to remove) 状态表示远程仓库的 test3 已被删除,但是本地仓库列表中仍然有这个分支的引用。
建议使用 git remote prune [remote-name] 来删除已经不存在的远程分支引用( 只是删除远程引用 origin/test3,而不是本地分支 test3 )。

$ git remote prune origin
Pruning origin
URL: https://github.com/AttitudeToLife/test.git
 * [pruned] origin/test3 # 成功删除了 origin/test3 这个远程分支的引用

3、new (next fetch will store in remotes/origin) 状态表示远程仓库有新的分支,但是新分支还没有添加到本地的远程分支列表中。
建议使用 git fetch 将新的远程分支添加到本地的远程引用列表中( 只是添加远程引用 origin/test2,而不是在本地新建分支 test2 )。

$ git fetch                           
From https://github.com/AttitudeToLife/test
 * [new branch]      test2      -> origin/test2 # 新增 origin/test2 分支的引用

如果不清楚 git remote prune origingit fetch 执行的效果,可以参考下面 vsCode 的截图:

4、Local branches configured for ‘git pull’ 表示本地分支与远程分支的合并关系,即在执行 git pull 时,本地分支 main、test1 和 test3 分别与远程的 main、test1 和 test3 分支进行合并。
5、Local refs configured for ‘git push’ 表示本地分支与远程分支的推送关系,即在执行 git push 时,本地分支 main、test1 和 test3 分别推送给远程的 main、test1 和 test3 分支。

拉取远程仓库
git fetch
git pull

以上两个指令,都可以从远程仓库拉取数据到本地仓库,但是两者略有不同:
git fetch 指令从远程仓库拉取数据时,不会修改工作目录中的内容,需要我们自己去合并( git merge )。
git pull 指令可以认为是 git fetchgit merge 的组合体,拉取数据后马上将其合并进当前所在的分支。

推送到远程仓库
git push

该指令可以将本地分支备份到远程分支。
如果在这个分支上,已经有其他人在你之前推送过数据,那么,必须先将他们的内容拉取下来并将其合并进你的工作区后才能推送。

0人推荐
随时随地看视频
慕课网APP