Dawn's Blogs

分享技术 记录成长

0%

Git学习笔记 (3) 远程库操作

Git 团队协作机制

团队内协作

  • A 首先从本地库中将代码 push 到远程库中。
  • B 将远程库中的代码 clone 到本地库中,然后可以继续开发。开发完成后,将自己本地分支 push 到远程库中。
  • A 可以将远程库中,B 新上传的代码 pull 到本地库,就可以获取新的代码了。

image-20221222152000913

跨团队协作

  • 团队2 将团队 1 远程库中的代码 fork 到自己的远程库中。
  • 团队 2 的成员就可以 clone 自己的远程库中的代码进行开发,开发完成后将本地分支 push 到团队 2 的远程库中。
  • 团队 2 发出 pull request,团队 1 审核后进行合并,merge 到自己的远程库中。

image-20221222152154848

远程库操作

命令 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 为远程地址起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

clone fetch pull 区别

以下说明 git clone、git fetch、git pull 的区别。

git clone

Git 的 clone 命令的工作如下:

  1. 自动将远程库命名为 origin,拉取它的所有数据。
  2. 创建一个指向远程库的 master 分支的指针,并且在本地将其命名为 origin/master
  3. 创建一个与 origin 的 master 分支在指向同一个地方的本地 master 分支

img

git fetch

  1. 本地有提交,远程也有别人的推送。

    • 远程库有人推送,提交了 C0 和 C1:

    img

    • 本地提交了 D0 和 D1:只要你不与 origin 服务器连接,本地的 origin/master 指针就不会移动

    img

  2. 同步:如果要同步远程库到本地,运行 git fetch origin 命令。此时,会移动 origin/master 指针指向远程库中新的、更新后的位置。

    img

    需要注意的是,

    fetch 抓取到新的远程跟踪分支时,本地的工作区不会自动生成一份可编辑的副本,抓取结果是直接送到本地库中。

    • 如果想要在 origin/master 分支上工作,可以新建分支 test 并将其建立在远程跟踪分支之上:
    1
    git checkout -b test(本地分支) origin/master(远程分支)

    img

    • 如果想把拉取的结果合并到本地分支,需要手动合并。
    1
    2
    git chekout master
    git merge origin/master

git pull

git pull 是 git fetch 和 git merge 的两步的和

但是由于 git pull 的使用经常令人困惑,所以通常单独显式地使用 fetch 与 merge 命令会更好一些。