[Git] 系列四Push & Pull —— Git 远程仓库和高级操作

[Git] 系列四Push & Pull —— Git 远程仓库和高级操作

Author: Xin Pan

Date: 2022.11.06


git fetch

git fetch 完成了仅有的但是很重要的两步:

  • 从远程仓库下载本地仓库中缺失的提交记录
  • 更新远程分支指针(如 o/main)

git fetch 并不会改变你本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。

git pull

更像是git fetchgit merge 的融合。

git push

提交本地代码到远程分支。

git pull –rebase

假设你周一克隆了一个仓库,然后开始研发某个新功能。到周五时,你新功能开发测试完毕,可以发布了。但是 —— 天啊!你的同事这周写了一堆代码,还改了许多你的功能中使用的 API,这些变动会导致你新开发的功能变得不可用。但是他们已经将那些提交推送到远程仓库了,因此你的工作就变成了基于项目旧版的代码,与远程仓库最新的代码不匹配了。

这种情况下, git push 就不知道该如何操作了。如果你执行 git push,Git 应该让远程仓库回到星期一那天的状态吗?还是直接在新代码的基础上添加你的代码,亦或由于你的提交已经过时而直接忽略你的提交?

因为这情况(历史偏离)有许多的不确定性,Git 是不会允许你 push 变更的。实际上它会强制你先合并远程最新的代码,然后才能分享你的工作。

git pull --rebase
git push

合并特性分支

这关和现实的情况很接近。

在这里插入图片描述

假设现在的人物是这样的。

在这里插入图片描述

我们可以通过如下命令完成

# 拉取远程分支
git fetch
# 因为要合并多个分支需要多次变基
git rebase o/main side1
git rebase side1 side2
git rebase side2 side3
git rebase side3 main
# 推送远程分支
git push

同样的可以使用另一个方法来做同样的工作。merge。

在这里插入图片描述

# 为的是将每个特性分支合并到main上。先切到main上,拉取远端(因为可能会有更新,就像现在的截图里这样)
git checkout main
git pull
git merge side1 
git merge side2 
git merge side3
git push

删除一个远程分支

git push origin :<branch_name>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值