Git 堆栈中 -- 代码辩说产生、定位、办理的流程

[复制链接]
发表于 2026-2-6 01:02:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前置知识

远程堆栈: 是指存储在远程服务器上的Git堆栈,如 github、gitee 中创建的堆栈
当地堆栈: 是指存储在开辟者当地皮算机上的Git堆栈。开辟者可以在当地堆栈中举行代码修改,而这些变动只影响到当地堆栈。开辟者可以将当地堆栈中的代码推送(Push)到远程堆栈,也可以从远程堆栈拉取(Pull)最新的代码到当地堆栈。
1 工具环境

git + tortoisegit
2 辩说的产生

举例分析,在当前分支上,有一段代码是如许的
  1. <h2>金融领域情感分析系统</h2>
复制代码
职员 A 开始开辟,将代码修改为如下
  1. <h2>金融领域情感分析系统,第一次更改</h2>
复制代码
而且将代码 push 到远程堆栈
但是在 A 将代码 push 之前,职员 B 就开始开辟,将代码修改为如下
  1. <h2>金融领域情感分析系统,第二次更改</h2>
复制代码
A 职员 push 代码后,B 才开辟完,准备提交代码,但由于 A B 都修改了同一行代码,就造成了代码辩说,无法 push 上去
下面 DEMO 纪录了辩说产生、探求、办理的完备流程
2.1 堆栈中的源代码

源代码如下:

如今有两个职员 A、B 举行开辟任务,基于当前代码 clone 到当地
2.2 职员 A 起首更改代码

A 将代码举行修改,并 push 代码至远程堆栈

2.3 职员 B 更改代码,产生辩说

B 职员原来代码如下

为了模仿代码辩说,修改代码如下

然后 B 实验 commit,commit 是不会有错误的,如下图

commit 乐成后,举行 push 操纵,到这一步就会提示 error,如下图
2.3.1 第一次错误提示:


上图的的赤色error,表明:这是由于远程库与当地库代码不划一造成的。说寻常点,就是远程堆栈存在一些新代码,你没有拉取 (pull),根据下面的提示也可以知道,我们必要举行 git pull 操纵
接下来实验 git pull 下令, git pull 会拉取远程堆栈的代码至当地,举行代码归并
2.3.2 第二次错误提示:

如下图,我实验了 git pull,盼望将远程堆栈的代码拉取同步,一样寻常环境下,远程堆栈的代码会自动归并到我的当地,但是!由于 A B 职员修改过同一行代码,肯定会造成辩说,。git pull会提示错误:CONFLICT (辩说)

图中有两处信息提示值得我们留意:


  • 1 提示:CONFLICT (content): Merge conflict in src/components/myHeader.vue,表现该文件存在辩说
  • 2 提示:Automatic merge failed; fix conflicts and then commit the result.,表现必要我们自己手动办理辩说,然后再次举行 commit
说寻常点,就是由于 A B 职员修改过同一行代码,肯定会造成辩说,必要我们自己手动办理辩说,也就是,我们手动对代码举行归并,将辩说的代码归并起来,再重新举行 commit push
3 查察辩说

下面我们来看看是哪些详细代码产生了辩说
此时我们打开文件夹,可以看到有辩说的文件会携带一个 黄色的告诫标识

我们使用 VScode 打开,可以看到当前代码会使用如下符号,将代码分隔开
  1. <<<<<<<<<HEAD
  2. 代码
  3. ==========
  4. 代码
  5. >>>>>>>>>>
复制代码
如下图所示:

这些 <<<<< >>>>> 符号表现什么意思?我将这里分为三个告急的部门


  • 1 黄色地区:为我们提供了一些快捷的办理辩说方式


    • 接纳当前更改:代码会扬弃职员 A 的更改,仅保存职员 B 的更改,一样寻常不会使用



    • 接纳传入的更改:代码会扬弃职员 B 的更改,仅保存职员 A 的更改,一样寻常不会使用



    • 保存双方更改:A 和 B 的更改都会被保存下来,一样寻常不会使用



    • 比力变动:会打开一个界面,我们可以更清晰的看到代码变动

  • 2 赤色地区:这里是职员 B 修改的代码,即本次提交作者改的代码
  • 3 绿色地区:这里是职员 A 修改的代码,即上一次提交作者改的代码
到此,我们就知道了那里的代码产生了辩说
4 手动办理辩说

接下来,我们要手动,将辩说的代码归并起来
4.1 方式一

方式一是使用编辑器 vscode 举行修改,打开编辑器,如下图

上一节中,已经表明了 <<<<< 和 >>>>>> 分隔代码的寄义
假设我们如今盼望,A B的代码都保存,即保存全部文案:“第一次更改”和“第二次更改”和“”按钮,我们只必要在编辑器中,将代码归并为我们盼望的样子,并删除多余的内容,如下图所示

生存后,然后右键选择文件,点击 resolve,表现将辩说已包办理,文件的黄色告诫就会消散


4.2 方式二(tortoisegit)


左上:职员 A 的修改
右上:职员 B 的修改
下面:我们必要手动处理惩罚归并,即我们盼望怎么保存代码,将代码写在下面
此中,黄色表现该部门代码已被删除,我们要将保存的代码写在赤色地区

假如我们盼望,将职员A的修改,和职员B的修改都保存,那么可以在下面的地区,将文案“第一次更改”“第二个更改”都添加上,即代码会被归并为如许

生存关闭窗口,右键选择文件,点击 resolve,表现将辩说已包办理,文件的黄色告诫就会消散

5 归并辩说后重新commit

到这里,我们已经将辩说归并
我们必要重新举行 commit 和 push操纵

此时,message 上自动会有文案如下图
表现当前 commit 的代码归并了辩说

点击 commit ,会出现弹窗,点击 ignore

6 归并辩说后重新 push

实验 git push,代码提交乐成

进入 github 堆栈中,查察代码,是我们手动归并后的效果

到此代码辩说的题目就办理好了
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表