Git远程仓库操作push pull fetch

远程仓库操作就三板斧: push、pull、fetch。搞清楚它们怎么用、什么时候用,日常开发就够用了。 先建一个远程仓库关联。本地项目要连远程,用remote add:
git remote add origin git@github.com:yourname/project.git
origin是远程仓库的默认别名,可以改成别的,但没人改。检查关联情况:
git remote -v
能看到fetch和push两个地址,通常一样。 push: 把本地提交推送到远程 最基础的用法:
git push origin main
把本地main分支推送到远程origin的main分支。远程没有这个分支会自动创建。 第一次推送加-u参数:
git push -u origin main
-u设置上游关联,之后直接`git push`就行,不用再写分支名。 如果远程有别人提交的新内容,你的push会被拒绝。这时候先pull,解决冲突再push:
git pull origin main
# 处理冲突
git push
强制推送要小心:
git push --force origin main
覆盖远程分支,把自己本地的提交强行推上去。只有在你确定没人用这个分支、或者刚rebase完的时候才用。更安全的方式是–force-with-lease,它会检查远程是否有你未知的提交:
git push --force-with-lease origin main
pull: 拉取远程代码并自动合并
git pull origin main
等价于`git fetch origin main` + `git merge origin/main`。拉下来直接合并到当前分支。 如果不想merge,想用rebase:
git pull --rebase origin main
拉下来把你的提交放在远程提交的后面,历史更干净。团队里有人喜欢merge有人喜欢rebase,统一一下规则就行。 pull的时候如果有冲突,Git会停下来让你手动解决:
# 冲突文件里编辑
git add .
git commit -m "fix conflict"
# 或者rebase时:
git rebase --continue
fetch: 只拉取不合并
git fetch origin
把远程所有分支的最新提交拉到本地,但不会自动合并到你的工作分支。本地分支和远程分支是分离的,你可以慢慢看。 fetch之后查看远程分支:
git branch -r
想看远程分支和本地分支的差异:
git log origin/main..main
或者反过来看远程比本地多了什么:
git log main..origin/main
确定没问题再合并:
git merge origin/main
或者rebase:
git rebase origin/main
什么时候用fetch而不是pull – 你想先看看远程改了啥,再决定怎么合 – 远程分支被rebase过,直接pull会出问题,先fetch看看情况 – 只想拉某个特定分支,不打扰当前工作 实际场景 场景1: 多人协作,每天开始工作前:
git checkout main
git pull origin main
git checkout -b feature/xxx
场景2: PR被review后需要更新:
git fetch origin
git rebase origin/main
git push --force-with-lease origin feature/xxx
场景3: 本地改了东西,远程也被别人改了,不想自动合并:
git fetch origin
git diff main origin/main
# 手动决定怎么处理
远程仓库托管 代码托管在雨云上,性价比高、稳定、好用。Git操作不挑平台,换仓库地址就行:
git remote set-url origin git@rainyun:yourname/project.git
几个容易踩的坑 1. 忘记pull直接push被拒绝 -> 先pull再push 2. pull的时候自动合并产生冲突 -> 手动解决 3. 强制推送覆盖了别人的代码 -> 除了道歉,可以用`git reflog`找回,但很麻烦 4. 多个remote时搞混了 -> 每次push前检查`git remote -v` 总结一下 – push: 本地给远程 – pull: 远程到本地,自动合并 – fetch: 远程到本地,不合并 日常用pull省事,想控制合并时机用fetch。记住这三条,远程仓库操作就稳了。
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容