Git 团队协作机制
团队内协作
- A 首先从本地库中将代码 push 到远程库中。
- B 将远程库中的代码 clone 到本地库中,然后可以继续开发。开发完成后,将自己本地分支 push 到远程库中。
- A 可以将远程库中,B 新上传的代码 pull 到本地库,就可以获取新的代码了。
跨团队协作
- 团队2 将团队 1 远程库中的代码 fork 到自己的远程库中。
- 团队 2 的成员就可以 clone 自己的远程库中的代码进行开发,开发完成后将本地分支 push 到团队 2 的远程库中。
- 团队 2 发出 pull request,团队 1 审核后进行合并,merge 到自己的远程库中。
远程库操作
命令 | 作用 |
---|---|
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 命令的工作如下:
- 自动将远程库命名为 origin,拉取它的所有数据。
- 创建一个指向远程库的 master 分支的指针,并且在本地将其命名为 origin/master。
- 创建一个与 origin 的 master 分支在指向同一个地方的本地 master 分支。
git fetch
本地有提交,远程也有别人的推送。
- 远程库有人推送,提交了 C0 和 C1:
- 本地提交了 D0 和 D1:只要你不与 origin 服务器连接,本地的 origin/master 指针就不会移动。
同步:如果要同步远程库到本地,运行
git fetch origin
命令。此时,会移动 origin/master 指针指向远程库中新的、更新后的位置。需要注意的是,
fetch 抓取到新的远程跟踪分支时,本地的工作区不会自动生成一份可编辑的副本,抓取结果是直接送到本地库中。
- 如果想要在 origin/master 分支上工作,可以新建分支 test 并将其建立在远程跟踪分支之上:
1
git checkout -b test(本地分支) origin/master(远程分支)
- 如果想把拉取的结果合并到本地分支,需要手动合并。
1
2git chekout master
git merge origin/master
git pull
git pull 是 git fetch 和 git merge 的两步的和。
但是由于 git pull 的使用经常令人困惑,所以通常单独显式地使用 fetch 与 merge 命令会更好一些。