拒绝 git push -f ,纯小白也能学会的git远程仓库冲突解决方案

关于远程仓库你必须知道的:

什么是远程仓库

Git 远程仓库,简单来说,就是位于远程服务器上的代码仓库,它就像是一个 "云端基地" ,专门用来存储和管理我们的代码。我们可以把本地仓库中的代码推送到远程仓库,也可以从远程仓库拉取最新的代码到本地,实现代码的共享和协作。

从存储位置上看,本地仓库在我们自己的电脑里,就像我们的私人小抽屉,我们可以随时打开它进行操作,并且不需要联网也能工作。而远程仓库在远程服务器上,就像一个公共的大仓库,需要通过网络才能访问 ,这也是为什么我们前面几章的命令不需要联网也可以运行。

为何需要远程仓库?

既然远程仓库是一个"云端基地",那么我们可以很自然的想到他的一些作用:

  1. 协作沟通桥梁:在多人协同开发项目时,不同开发者可在各自的本地仓库中独立开展开发工作,完成阶段性任务后将代码推送到远程仓库,其他团队成员则从远程仓库拉取最新代码,实现代码的实时共享与同步。
  2. 备份安全保障:在软件开发进程中,本地电脑可能遭遇诸如硬盘损坏、系统崩溃等各类故障。而远程仓库相当于一个云端的备份,即便本地数据不幸丢失,凭借远程仓库,开发者也能轻松将代码恢复至其他设备,确保项目开发不受重大影响。
  3. 开源展示舞台:借助远程仓库,尤其是像 GitHub 这样的知名开源平台,开发者能够积极参与开源项目,将自己的代码作品展示给全球开发者社区。

拥有自己的远程仓库

讲了那么多,我们至今也没有一个自己的远程仓库,现在就让我们动手创建一个远程仓库。

本地与远程仓库初次建立连接的方法

与远程仓库建立连接的方法主要有两种:

方法 1:本地已有项目,关联远程仓库

  1. 将原有项目给转化成git仓库

    csharp 复制代码
    git init

    这个命令将会在该文件夹下生成一个 .git 目录,这是git的工作目录,也是我们判断一个一个目录是不是git仓库的一个标志。

  2. 添加远程仓库地址

    csharp 复制代码
    git remote add origin 远程仓库的地址

    git 命令,将远程仓库的地址添加到本地,并将其命名为origin。这里的origin是远程仓库的常用别名,方便后续在推送和拉取代码时进行引用。

  3. 首次推送代码

    css 复制代码
    git push -u origin main

    执行该命令会将本地main分支的代码推送到远程仓库,并自动设置本地分支与远程分支的关联关系。在此之后,进行推送和拉取代码操作时,可省略分支名,直接使用 git push 命令即可,简化操作流程。

方法 2:直接克隆远程仓库

若希望直接将远程仓库的代码完整复制到本地,可执行下面这个命令

bash 复制代码
git clone 远程仓库地址

Git 会在本地创建一个与远程仓库完全一致的副本,包括所有分支及完整的提交历史记录,方便开发者在本地快速开展开发工作。我们也可以看到该目录下回自动生成一个 .git 仓库。

本地分支与远程分支的交互操作

本地仓库与远程仓库的交互主要有两种:拉取推送,通过这两个操作我们可以实现本地仓库与远程仓库的同步。

推送代码到远程:git push

  1. 在本地完成代码修改后,首先需执行 git add. 命令,将所有修改的文件添加到暂存区,准备提交。
  2. 使用 git commit -m "" 命令,提交修改并附上详细且有意义的提交说明,以便后续追溯和理解代码变更。
  3. 执行 git push 命令(此命令等同于git push origin main),将本地main分支的代码推送到远程仓库,实现本地代码与远程仓库的同步更新。
csharp 复制代码
git add.
git commit -m "some comment"
git push

拉取远程更新:git pull

当团队成员更新了远程仓库的代码,你需要同步最新版本时,可执行 git pull 命令(等同于git pull origin main)。

git pull 相当于 git fetch + git merge

git pull 命令的内在原理是先执行 git fetch 命令,从远程仓库下载最新的代码更新,然后执行 git merge 命令,将下载的更新合并到本地当前分支。通过这一系列操作,确保本地代码与远程仓库的最新状态保持一致。

实践:模拟多人协作:冲突的产生与解决

步骤1:准备工作:

首先准备两个本地分支 devadevb 来分别模拟两个开发者的本地分支。

步骤 2:制造冲突

  1. 开发者 A 的操作 :开发者 A 对 diary-2025.md 文件进行修改,内容如下:

# hello deva

修改完成后,执行 git add. && git commit -m "A更新日记" 命令提交修改,并使用 git push origin HEAD:master 命令将代码推送到远程仓库,完成自己的代码更新操作。

这里介绍一下 git push origin HEAD:master 命令, origin 是远程仓库的名字,HEAD指向的是当前的本地分支,也就是 devamaster 指的是想要推的远程分支的名字

  1. 开发者 B 的操作 :开发者 B 在未执行 git pull 命令获取最新代码的情况下,直接对 diary-2025.md 文件的同一行进行修改,内容为:# hello devb

当开发者 B 执行 git push 命令尝试推送代码时,将会收到报错提示,告知远程仓库存在本地未合并的修改,无法直接推送。

步骤 2:解决冲突

  1. 拉取远程代码:开发者 B 在得知冲突后,执行git pull命令,此时系统会明确提示冲突(CONFLICT),表明本地代码与远程代码存在不一致,需要进行冲突解决。
  1. 手动解决冲突 :开发者 B 打开冲突文件 diary-2024.md ,文件中冲突部分会以如下格式显示:

开发者 B 需根据实际业务需求,手动仔细选择保留的内容。例如,经过思考后将其修改为:

# 今天和团队一起学习了远程仓库操作!

  1. 重新提交并推送:完成冲突解决并修改文件后,执行git add.命令将修改后的文件添加到暂存区,接着使用git commit -m "解决冲突:合并A和B的修改"命令提交解决冲突的操作记录,最后执行git push命令,将最终整合后的代码推送到远程仓库,完成整个冲突解决流程。
相关推荐
Re.不晚6 分钟前
Web前端开发——HTML基础下
前端·javascript·html
几何心凉8 分钟前
如何处理前端表单验证,确保用户输入合法?
前端·css·前端框架
浪遏18 分钟前
面试官😏: 讲一下事件循环 ,顺便做道题🤪
前端·面试
Joeysoda39 分钟前
JavaEE进阶(2) Spring Web MVC: Session 和 Cookie
java·前端·网络·spring·java-ee
邵奈一1 小时前
git报错:error: RPC failed; curl 16 Error in the HTTP2 framing layer
git·网络协议·rpc
小周同学:1 小时前
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
前端·npm·node.js
浪遏1 小时前
面试官:字符串反转有多少种实现方式 ?| 一道题目检测你的基础
前端·面试
kjl5365661 小时前
前端题目类型
前端
IT、木易1 小时前
大白话CSS 优先级计算规则的详细推导与示例
前端·css·面试
TinTin Land2 小时前
后 Safe 时代:多签钱包安全新范式与防范前端攻击的新思路
前端·安全