远程仓库操作

#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 pushgit 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

相关笔记