远程仓库操作
#git
#remote
#push
#pull
#远程仓库
远程仓库操作#
关联远程仓库#
将本地仓库链接到远程仓库。如果是在远程仓库的基础上开发(git clone),则不需要执行这一步。
# 添加远程仓库
# git remote add <别名> <远程URL>
# origin 是约定俗成的远程仓库别名,你可以使用任何名称
git remote add origin https://github.com/user/repo.git
查看远程仓库#
# 查看所有远程仓库及其 URL
git remote -v
# 输出示例:
# origin https://github.com/user/repo.git (fetch)
# origin https://github.com/user/repo.git (push)
修改远程仓库地址#
# ==================== 方式一:直接修改 URL(推荐) ====================
git remote set-url origin https://new-url.com/user/repo.git
# ==================== 方式二:先删后加 ====================
# 删除远程仓库
git remote remove origin
# 重新添加
git remote add origin https://new-url.com/user/repo.git
💡 提示
origin 是什么?
origin 只是某个远程仓库的本地别名,它可以指向 GitHub、GitLab、Gitee、自建服务器,甚至本地另一个目录。当你执行 git clone <url> 时,Git 会自动把这个远程仓库命名为 origin。
推送到远程仓库#
# 将本地版本库的更改推送到远程版本库
# git push <远程别名> <分支名>
git push origin main
# 推送到远程并设置上游分支
# 设置后,以后可以直接 git push,无需指定远程和分支
git push -u origin main
# 推送所有本地分支到远程
git push --all origin
⚠️ 注意
首次推送
首次推送新分支时,需要使用 -u 参数设置上游分支:
git push -u origin feature/new-feature设置后,以后可以直接使用 git push 和 git pull,无需指定远程仓库和分支名。
拉取远程更改#
# ==================== git pull ====================
# 从远程版本库拉取最新更改并合并到本地版本库
# 相当于 git fetch + git merge 的组合命令
git pull origin main
# ==================== git fetch + git merge ====================
# 第一步:下载远程代码(不合并)
# 只更新远程分支的引用,不影响本地分支
git fetch origin main
# 第二步:合并到本地
# 将远程分支的更改合并到当前分支
git merge origin/main
✨ 技巧
git pull vs git fetch + git merge
| 方式 | 优点 | 缺点 |
|---|---|---|
git pull | 简单快捷,一步到位 | 自动合并可能产生意外冲突 |
git fetch + git merge | 可以先查看远程更改再决定是否合并 | 需要两步操作 |
推荐:在不确定远程更改内容时,使用 git fetch 先查看,再决定是否 git merge。
冲突处理#
场景一:本地有未提交的修改#
问题:本地修改了 old.css 但还没 commit,而远程删了它
结果:Git 会拒绝 pull,这是安全保护机制
解决方法:
1. 先 commit 本地修改
2. 或者使用 git stash 暂存修改
3. 然后再 pull
# 方式一:先提交
git add .
git commit -m "保存本地修改"
git pull origin main
# 方式二:使用 stash
git stash # 暂存本地修改
git pull origin main # 拉取远程更改
git stash pop # 恢复本地修改
场景二:合并时产生冲突#
当两个分支修改了同一文件的同一位置时,会产生合并冲突。
# 合并时出现冲突
git merge other-branch
# CONFLICT (content): Merge conflict in file.txt
# Automatic merge failed; fix conflicts and then commit the result.
冲突标记说明#
<<<<<<< HEAD
这是当前分支(HEAD)的内容
=======
这是要合并的分支的内容
>>>>>>> other-branch
解决冲突步骤#
# 第一步:查看冲突文件
git status
# 第二步:手动编辑冲突文件
# 删除冲突标记(<<<<<<<、=======、>>>>>>>)
# 保留你想要的内容
# 第三步:将解决后的文件添加到暂存区
git add <冲突文件>
# 第四步:提交合并结果
git commit -m "解决合并冲突"
修改/删除冲突示例#
# 场景:master 修改了 style.css,other-branch 删除了 style.css
# 冲突原因:Git 不知道该保留修改还是接受删除
# --- 方式 A:保留文件(选择 master 的修改) ---
git add style.css # 标记为已解决
git commit -m "保留 style.css"
# --- 方式 B:接受删除(选择 other-branch 的删除) ---
git rm style.css # 删除文件
git commit -m "接受删除"
# --- 方式 C:放弃合并,回到合并前 ---
git merge --abort # 取消合并,回到 merge 之前的状态
⚠️ 注意
冲突解决后记得推送
解决冲突并提交后,别忘了将结果推送到远程:
git push origin <分支名> 远程分支管理#
# 查看远程分支
git branch -r
# 清理本地已失效的远程分支引用
# 当远程分支被删除后,本地的远程分支引用不会自动删除
git fetch --prune
# 查看远程仓库详细信息
git remote show origin
相关笔记: