目录
[添加(git remote add)](#添加(git remote add))
[与 git clone对比](#与 git clone对比)
[抓取(git fetch)](#抓取(git fetch))
[拉取(git pull)](#拉取(git pull))
[推送(git push)](#推送(git push))
[git fetch + git merge](#git fetch + git merge)
[git fetch + git rebase](#git fetch + git rebase)
[git pull](#git pull)
[移除(git remote remove/rm)](#移除(git remote remove/rm))
对远程仓库的操作
介绍
远程仓库是托管在网络中的 Git 仓库
- 常见的平台有 GitHub、Gitee、GitLab 等
- 我们可以与远程仓库进行同步、协作开发、备份等操作
查看 (git remote)
介绍
git remote
- 查看当前 Git 仓库配置的远程仓库名称
(默认是origin)
如果添加 -v选项
- 查看远程仓库名 + 详细 URL(fetch 和 push -- 拉取/推送代码)
查看详细信息
git remote show <remote> 命令 用于显示关于指定远程仓库的详细信息,不仅包括仓库的 URL,还包括一些其他关键的信息
- 还会列出哪些远程分支 不在你的本地 / 已经从服务器上移除 , 执行 git pull 时,哪些本地分支可以与它跟踪的远程分支自动合并
添加(git remote add)
介绍
git remote add 新名字 地址
- 给当前本地 Git 仓库 添加一个远程仓库地址,并起一个别名 -- 这样你之后就可以通过这个别名来操作远程仓库,而不用每次都写完整的 URL
- 核心是添加了一个指向远程仓库的"地址标记",修改了本地仓库的.git/config 文件
与 git clone对比
从远程仓库中抓取与拉取
抓取(git fetch)
git fetch <远程仓库名>把远程仓库的新提交、分支(当前所有 你还没有 的数据)等内容下载到本地,但不会自动合并或改变你的当前工作分支
需要手动合并
- 把远程的
origin/main
合并到你当前的分支拉取(git pull)
git pull <远程名> <分支名>
- 表示从远程仓库
origin
的main
分支抓取更新,并合并到你当前所在的分支- 是
git fetch
+git merge
的快捷方式 -- 从远程抓取最新数据 + 合并当前分支与远程分支
推送(git push)
介绍
当你想要将 master 分支推送到 origin (默认名)服务器时,使用 git push <remote> <branch> 命令可以将你所做的备份到服务器
- eg: $ git push origin master
注意
成功推送的条件 -- 要有克隆服务器的写入权限 + 之前没有人推送过 (本地是"基于最新的")
如果别人先你一步推送了新的提交,然后你再尝试推送你自己基于旧版本的提交,推送请求会被拒绝
你必须先抓取他们的工作,并将其合并进你的工作后,才能推送
抓取更新+合并的方法
git fetch + git merge
- 进行分支合并(远端和本地)时,如果你本地有修改过某个文件,而远程也对同一部分进行了修改,Git 无法自动合并,就会发生冲突
解决冲突
执行
git status
来查看哪些文件发生了冲突 -- 未解决的冲突文件标记为unmerged
- 也就是删除掉你认为不需要的内容
- 注意,一定要把冲突标记全部删除 -- 否则Git 会认为你没有解决冲突,文件仍然处于冲突状态
- 如果想要合并,就把标记删除即可
解决冲突后,使用
git add
将冲突文件标记为已解决,然后就可以进行提交+推送git fetch + git rebase
- 如果你本地的某个提交和远程的更新有冲突,Git 会停止 rebase 过程,提示你解决冲突
解决冲突
前面的步骤都是一样的,查看+手动处理+标记为已解决
完成后,继续进行rebase -- 执行
git rebase --continue
继续 rebase 过程
- 如果还有其他冲突,git会再次停止,你需要重复上述过程,直到无冲突
完成rebase后,即可推送
git pull
对比
移除(git remote remove/rm)
git remote remove/rm
- 从当前 Git 仓库的配置中移除指定的远程仓库 -- 意味着本地仓库将不再与该远程仓库进行交互 (删除了该远程仓库相关的远程跟踪分支+配置信息)