在编程中遇到的问题总结

IDEA空包粘黏问题

创建好目录以后会发现idea自动将空包合并在一起了,而且点击设置里面也没有Compact Middle Package

Compact Middle Package如果不在设置的主面板上,则点击Tree Appearance,会发现Compact Middle Package在Tree Appearance里面,然后去掉Compact Middle Package前面的勾选即可展开包

IDEA中解决控制台乱码问题

IDEA控制台输出乱码解决办法 - 知乎

在使用Filter的时候只重写doFilter方法带来的问题 

在使用过滤器的时候,xml文件配置都没有问题:

但访问页面的时候(不管是静态的还是动态的),都会报404错误。原因就是因为没有重写Filter里面的init方法。在 web 工程启动的时候执行构造器方法和init 初始化方法 ,如果没有重写过滤器的初始化方法,那么就没法使用过滤器,而xml文件里面有配置了过滤器的信息,所以服务器在执行的时候,根据xml的配置他找MyFilter这个类,发现这个类没有初始化,根本就没有,所以就会报404。 

在mapper.xml文件中插入对象的SQL语句遇到的问题 

当我们需要在mapper.xml文件中插入对象时,我们可以像下面这样写:

    <insert id="addStudent" parameterType="com.example.demo.entity.Student">
        insert into student (name,age,school,gender) values(#{name},#{age},#{school},#{gender});
    </insert>

上面的parameterType只是使用指定参数类型的,可有可无,没有也不会出错,但是协商以后含义更加明确。 

将对象存储到Redis遇到的问题 

再将封装好的对象转化为json字符串存储到redis中时,遇到了下面问题

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private ObjectMapper objectMapper;

    //登录操作
    @RequestMapping("/login")
    public Object login(HttpServletRequest req,String username,String password) throws IOException {
        if(StringUtils.hasLength(username) && StringUtils.hasLength(password)){
            User user = userService.findUserByName(username);
            if(user!=null && user.getPassword().equals(password)){
                //将登录信息存储到session中
                HttpSession session = req.getSession(true);
                session.setAttribute("username",username);
                //将session持久化到redis中
                String sessionStr = objectMapper.writeValueAsString(session);
                stringRedisTemplate.opsForValue().set("session",sessionStr);
                return 1;
            }
        }
        return -1;
    }

}
[org.apache.ibatis.session.defaults.DefaultSqlSession@3e9c5527]
2023-06-11T20:38:19.353+08:00  WARN 21124 --- [nio-8080-exec-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.util.Collections$3 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.apache.catalina.session.StandardSessionFacade["servletContext"]->org.apache.catalina.core.ApplicationContextFacade["initParameterNames"])]

警告消息指出在序列化对象时发生了问题,无法找到适当的序列化器。

警告消息的原因是将某个对象序列化为 JSON 格式返回给客户端,但在序列化过程中发现了一个问题。具体来说,异常消息中提到的是找不到合适的序列化器,因为被序列化的对象是 `java.util.Collections$3` 类型,且没有发现属性来创建 `BeanSerializer`。

解决此问题的方法是禁用 Jackson 库在遇到空对象时抛出异常。可以通过在 Spring Boot 的配置文件(如 `application.yml` 或 `application.properties`)中添加以下配置来实现:

spring:
  jackson:
    serialization:
      fail-on-empty-beans: false

或者在 Java 配置类中使用以下代码:

@Configuration
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizeJackson() {
        return builder -> builder.failOnEmptyBeans(false);
    }
}

通过以上配置,可以禁用 Jackson 序列化库在遇到空对象时抛出异常,从而避免警告消息的出现。

请注意,该警告消息可能不会对应用程序的功能造成实质性的影响,因为它只是提醒在序列化过程中发生了一些问题。然而,如果你的应用程序依赖于正确的序列化行为,并且你希望避免警告消息的出现,可以采取上述的配置方法来解决问题。

Unable to connect to Redis server: localhost/127.0.0.1:6379

遇到这个问题很大概率是redis.conf的ip配置没搞好,这是最典型的。但是当我修改了nacos上面业务当中某一项的超时时间时,就出现了这个问题

这一块原先是1秒钟,然后我改成200ms就出现了上面的问题了。原因是这样的,因为这个超时时间的这个业务用到了redis,当项目启动的时候,springBoot就会去检查redis里面的配置,但是由于时间太短,200ms来不及连上redis,所以就会报Unable to connect to Redis server: localhost/127.0.0.1:6379异常,导致项目无法启动。所以只需要将时间设置大点就没事。

引入工具类的时候遇到的问题 

在引入别人的工具类的时候,因为自己的项目java版本和他的不一样,导致JVM在加载类的时候报了下面这样的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

解释一下上面的错误:Java运行时无法在运行时找到特定类时发生,即使在编译时存在该类 

出现上面错误的原因:

这个问题通常出现在使用Java 9及更高版本时。从Java 9开始,默认情况下,Java开发工具包(JDK)中移除了包括`DatatypeConverter`在内的`javax.xml.bind`包。它是Java API for XML Binding(JAXB)的一部分,不再包含在标准JDK中。

要解决此错误,您有几个选项:

1. 如果您使用的是Java 8或更早版本:确保您使用的是正确的Java版本,并仔细检查类路径,确保它包括所需的库或包含所需类的JAR文件。

2. 如果您使用的是Java 9或更高版本:您需要显式向项目添加JAXB API库,因为它不再默认包含在其中。您可以从Maven中央仓库或其他仓库获取JAXB API库。要添加该库,请按照以下步骤操作:

   - 对于Maven用户:将以下依赖项添加到您的`pom.xml`文件中:

     <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
         <version>2.3.1</version>
     </dependency>

   - 对于Gradle用户:将以下依赖项添加到您的`build.gradle`文件中:

     implementation 'javax.xml.bind:jaxb-api:2.3.1'

确保根据您的需求调整版本号。

3. 如果您使用的是Java 11或更高版本:在Java 11中,完全从JDK中删除了`javax.xml.bind`包。相反,它作为一个名为`java.xml.bind`的独立模块可用。您可以通过在运行Java应用程序时添加以下命令行参数来添加该模块:
 

   --add-modules java.xml.bind

如果您使用的是IntelliJ或Eclipse等IDE,您可能需要在项目设置或VM参数中配置该模块。

通过遵循其中一种方法,您应该能够解决与`javax.xml.bind.DatatypeConverter`相关的`NoClassDefFoundError`。

在window中启动kafka时遇到的问题

[2023-06-17 17:37:33,486] ERROR Uncaught exception in scheduled task 'kafka-log-retention' (kafka.utils.KafkaScheduler)
org.apache.kafka.common.errors.KafkaStorageException: Error while deleting segments for follow-0 in dir E:\work\data\kafka-logs
Caused by: java.nio.file.FileSystemException: E:\work\data\kafka-logs\follow-0\00000000000000000000.timeindex -> E:\work\data\kafka-logs\follow-0\00000000000000000000.timeindex.deleted: 另一个程序正在使用此文件,进程无法访问。
ERROR Shutdown broker because all log dirs in E:\work\data\kafka-logs have failed (kafka.log.LogManager)

出现上面问题的原因是因为 

1. 日志目录不存在:请检查指定的日志目录是否存在。如果指定的日志目录不存在或路径错误,Kafka无法写入或读取日志文件,从而导致失败。确保指定的日志目录存在,并且Kafka broker具有正确的读写权限。

2. 文件系统错误:如果指定的日志目录所在的文件系统发生错误,如磁盘故障、文件系统损坏等,Kafka无法读取或写入日志文件,导致失败。请检查文件系统的健康状况,并确保文件系统没有发生任何故障。

3. 存储空间不足:如果指定的日志目录的存储空间已满,Kafka无法继续写入日志文件,导致失败。请检查指定的日志目录的磁盘空间,并确保有足够的可用空间供Kafka使用。

4. 文件权限问题:Kafka broker需要具有适当的文件权限才能读取和写入日志文件。请确保Kafka broker具有足够的权限来访问指定的日志目录及其内部的文件。

但最直接的办法就是将Kafka brokers的日志文件和zookeeper的数据和日志文件,然后重启。

在使用swagger时遇到的问题 

在使用swagger时,引入依赖和编写配置类以后,访问localhost:xxxx:/swagger-ui.html#/时,弹出页面:

Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually: 

网上说了很多原因,后来我降低了springBoot的版本为2.2.1.RELEASE以后就可以了,真的坑爹。

最主要的还是要检查你的maven里面的Dependencies里面有没有相关的依赖,还有就是SpringBoot版本不能过高。

如果出现了上面的情况,你最好在你的swagger配置的同级包下面写一个测试类,看看该类能不能正常运行。如果不能正常运行,那么向下面这样做:

首先在Maven里面的Lifecycle里面点击clean,然后在install一下,如果install过程中出现了某某jar包无法导入的情况,那么在点击Reload All Maven Projects,在运行一下你的测试类。 

debug的时候,断点只有第一次能够进入,第二次去不能进入 

IDEA的debug模式下断点只走一次,第二次断点都失效,解决办法_liang_336的博客-CSDN博客

在启动微服务时,报某个路径下面找不到某个类的问题

nested exception is java.io.FileNotFoundException: class path resource XXX.class cannot be opened because it does not exist 

报这样的问题一般是由缓存引起的,只需要清理缓存然后重新构建项目即可,别忘了在maven里面install


 

在使用openfeign时遇到Request method 'POST' not supported问题

在远程调用时我最开始使用的是GetMapping,然后启动程序在服务端就报了Request method 'POST' not supported异常,然后我尝试在参数前面加上@RequestParam注解
 

@FeignClient(value = ServiceNameConstants.TRANSFORM_SERVICE)
public interface ResolveBidResponseService {
    @GetMapping("/response")
    BidResponse resolve(@RequestParam("list") List<String> list);
}
@Slf4j
@RequiredArgsConstructor
@RestController
public class ResolveBidController {

    @GetMapping("/response")
    public BidResponse resolve(@RequestParam("list") List<String> list) {
        BidResponse result = list.stream()
                .map(item -> JSONObject.parseObject(item,BidResponse.class))
                .filter(bidResponse -> bidResponse.getAds() != null)
                .findFirst()
                .orElse(null);
        return result;
    }
}

修改成上面以后不再报Request method 'POST' not supported异常,但是由于我的业务需求需要将json字符串解析为json对象,在解析的过程中报了如下错误。后面经过思考,对于json类的字符串还是放在请求body里面传递为好,因为通过拼接url的方式传递在拼接过程中json字符串里面又嵌套了json字符串,那么就会对解析工作带来不必要的异常。
 

10:25:02.166 [http-nio-9231-exec-5] ERROR c.z.d.c.s.h.GlobalExceptionHandler - [handleException,51] - not match : - , info : pos 43, line 1, column 44{"bidid":"b1405b10ed6a4fb9bdfb0c6ba5e9d07f"
com.alibaba.fastjson.JSONException: not match : - , info : pos 43, line 1, column 44{"bidid":"b1405b10ed6a4fb9bdfb0c6ba5e9d07f"

最终我将请求方式改为了PostMapping,并在方法参数前面加上了@RequestBody注解,一定要加上该注解,因为需要告诉Feign如何将请求数据映射到参数上。修改后的代码如下

@FeignClient(value = ServiceNameConstants.TRANSFORM_SERVICE)
public interface ResolveBidResponseService {
    @PostMapping("/response")
    BidResponse resolve(@RequestBody List<String> list);
}
@Slf4j
@RequiredArgsConstructor
@RestController
public class ResolveBidController {

    @PostMapping("/response")
    public BidResponse resolve(@RequestBody List<String> list) {
        BidResponse result = list.stream()
                .map(item -> JSONObject.parseObject(item,BidResponse.class))
                .filter(bidResponse -> bidResponse.getAds() != null)
                .findFirst()
                .orElse(null);
        return result;
    }
}

springboot依赖注入的问题

我们项目中需要个根据下游的渠道号的接口地址来拉取他们的数据到我们的数据库中,所以需要将这些下游的渠道号和接口地址配置到bootstrap.yml文件中,如下
 

enterprises:
  importResource:
    - channel: judian_dsp
      url: http://192.168.37.1:9203/callback/apk/pull
    - channel: baishuo_dsp
      url: http://192.168.37.1:9204/callback/apk/pull

根据配置信息我们需要定义一个对象ImportResource和一个配置解析类EnterpriseProperties。最开始我是像下面这样写的

@Data
@Component
@ConfigurationProperties(prefix = "enterprises")
public class ImportResource {
    private static String url;
    private static String channel;

    public static String getUrl() {
        return url;
    }

    public static void setUrl(String url) {
        ImportResource.url = url;
    }

    public static String getChannel() {
        return channel;
    }

    public static void setChannel(String channel) {
        ImportResource.channel = channel;
    }
}

@Component
public class EnterprisesProperties {
    @Autowired
    private List<ImportResource> importResources;

    public List<ImportResource> getImportResources() {
        return importResources;
    }

    public void setImportResources(List<ImportResource> importResources) {
        this.importResources = importResources;
    }
}
System.out.println(enterprisesProperties.getImportResources().get(0).getChannel());
System.out.println(enterprisesProperties.getImportResources().get(0).getUrl());

可是这种写法在EnterprisesProperties的getImportResources方法中得到的ImportResource对象始终为null

后面我该了一种写法如下

@Component
@ConfigurationProperties(prefix = "enterprises")
public class EnterprisesProperties {

    private List<ImportResource> importResource;

    public List<ImportResource> getImportResource() {
        return importResource;
    }

    public void setImportResource(List<ImportResource> importResource) {
        this.importResource = importResource;
    }
    public static class ImportResource {
        private String url;
        private String channel;

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getChannel() {
            return channel;
        }

        public void setChannel(String channel) {
            this.channel = channel;
        }
    }
}

这种写法getImportResources就能获取到配置中的数据了 

解释一下我的想法,第二种写法ImportResource属于静态内部类,当主类来调用EnterprisesProperties这个实例的时候ImportResource对象就会被加载和初始化,所以getImportResource方法就能够获取到值。而第一种方式ImportResource是另外一个类,当主类调用EnterprisesProperties实例的时候,EnterprisesProperties才去把ImportResource对象注入进来,这是注入进来的ImportResource就是一个没有被赋值的对象而已。

还有在使用第二种方法的时候有重要的细节:

EnterprisesProperties类中get方法的名字必须是getImportResource,换其他的名字不行,因为必须和配置类中的对象名字(importResource)一样,不然就获取不到对象的结果,只能获取到null

调用微服务的时候报Read timed out问题

背景:我们在上线我们项目的时候,有个定时任务的业务需要调用其他微服务,本地测试没有问题。但是到了线上以后几乎每次执行该定时任务的时候都会报Read timed out异常,像下面这样 。

14:01:41.068 [DspScheduler_Worker-15] ERROR c.z.d.c.a.f.RemoteDspUserFallbackFactory - [create,27] - 用户服务调用失败:Read timed out executing GET http://dsp-core/rpc/count/syncIdeaHourForJob

起初我以为是网络的问题,但是测试了网络的连通性,是好的。后面在网上查了一下,说Feign的连接和响应时间没有给够,所以导致的,后面将Feign的连接响应时间修改了一下,像下面这样

但是改了以后好像没啥作用。后面我想了一下我们的服务里面配置了熔断机制,当连接或者响应超时也会触发熔断机制。所以后面又改了ribbon的连接响应时间,像下面这样 

后面微服务调用超时的问题就解决了。

创建的kafka集群在服务器重启以后,节点上的kafka没有自启的问题

背景: 

在搭建kafka集群的时候为了安全,我们创建一个tomcat用户和一个tomcat用户组,如下:

tomcat:x:1000:1000::/home/tomcat:/bin/bash
tomcat:x:1000:

服务器重启之后,我使用systemctl status kafka.service命令检查kafka是否在运行,发现kafka启动状态为failed,然后我检查了一下我们kafka开机自启文件,发现也没有问题。后面使用journalctl -u kafka.service命令检查kafka的启动日志,发现如下报错(我只粘贴主要报错信息):

Dec 29 13:38:34 node1 kafka-server-start.sh[3110]: java.io.FileNotFoundException: /apps/kafka/bin/../logs/server.log (Permission denied)
Dec 29 13:38:34 node1 kafka-server-start.sh[3110]: log4j:ERROR Either File or DatePattern options are not set for appender [kafkaAppender].
Dec 29 13:38:34 node1 kafka-server-start.sh[3110]: java.io.FileNotFoundException: /apps/kafka/bin/../logs/controller.log (Permission denied)

报错说kafka启动脚本在写入日志时,由于权限不足导致失败。然后我就修改了日志目录的权限如下:

chmod -R 755 /apps/kafka/logs

并且将/apps/kafka及其子目录的所有者和组都设置为tomcat,如下:

chown -R tomcat:tomcat /apps/kafka

然后再次启动kafka就可以了

systemctl start kafka.service

检查kafka的启动状态systemctl status kafka.service

如果还是不行,并且查看日志也没有报错,那可以将logs日志删除以后再重新创建。然后再将上面的操作执行一遍。注意这个只能在开发环境中使用,线上环境还是让专门的运维人员来解决。

在nginx中配置service_name以后访问网站报403的问题

背景:我们公司因为开发新系统,然后购买了新的服务器。在项目部署上线以后,因为要和我们之前开发的一套系统做测试联调。最开始我们是使用公网ip+80(nginx端口)的形式访问,发现只有前台系统(公司业务人员用的平台)能访问,但是后台系统就不知道咋访问了。因为我们的前台系统的html文件和后台系统的html文件都是放在一台服务器上面的一个nginx上面。那咋办呢,不可能不访问吧,毕竟后台系统里面有很多定时任务。后面我们就想直接域名解析,反正以后正式上线也是用域名进行访问。然后我们就创建了一个二级域名,域名记录值为本次要访问服务器的公网ip,如下所示:

这里不方便展示域名,记住主记录值和?前面的一级域名就好了,举个例子主记录值为xxx,一级域名为sss.com,所以在放网站的时候就直接xxx.sss.com就可以,能访问成功的前提是需要在nginx的配置文件里面将这个域名配置到service_name记录中,如下:

后面我们在浏览器中输入二级域名就能成功访问到前台网站。
错误:在配置域名之前,听别人说一个服务器上如果有两个网站,两个网站可以使用同一个二级域名,但是在 配置的时候,两个网站的service_name要配置成不一样的名字。后面我就在nginx里面为后台管理系统随便配置了一个域名。当我配置好以后重启nginx,然后访问网站,报403错误。我在网上看了很多博客,都说是没有权限什么的。后面我将存放后台管理系统的目录赋予权限以后,还是访问报403。
解决措施:后面我又后台管理系统解析了一个域名,然后将该域名配置到nginx的后台管理系统的service_name中才能正常访问:

启动定时任务时报java.lang.ClassNotFoundException问题

背景:我们项目在开发的时候同一个类中的不同方法,有些能够执行成功,也有执行的时候报java.lang.ClassNotFoundException异常
 

我看到这个第一想法肯定是类路径写错了,但是为啥同一个类中其他定时任务都能成功,为啥就这个定时任务启动失败,后面我检查了一下这个方法定时任务的类路径,噗噗噗!!!,发现类路径前面多了一个空格
 

后面将空格去掉以后,该定时任务就能访问成功了,算是一个比较低级的错误 

VPC对等连接遇到的问题

背景:我们公司拓展业务,需要在搭建一套系统,现在的这套系统的作用是给原先系统分发流量。当系统开发完成以后,因为要求请求响应时间要短,并且两套系统之间通讯不花钱,所以就需要这两套系统通过VPC对等连接建立起来。

当我们创建好对等连接以后,发现A账号的docker网段和B账号的内网IP重叠了:
 

导致A账号向B账号发消息,这个消息直接发送到A账号的docker网段里面去了,没有发送出去,要解决这个问题,最直接的办法就是修改A账号下面服务器的docker网段。但是考虑到A账号是原先的系统,并且上面有线上应用增在跑,所以就考虑修改B账号的内网IP,B账号下面的系统是才开发完的。

在修改B账号的内网IP之前,为了保险起见将B账号的docker网段也改一下,改之前B账号下面服务器的docker网段:
 

修改docker网段:


1. 停止 Docker 服务:使用以下命令停止 Docker 服务:
   sudo systemctl stop docker
2. 编辑 Docker 配置文件:打开 Docker 配置文件,通常位于 `/etc/docker/daemon.json`。如果文件不存在,则创建一个新文件。
   sudo nano /etc/docker/daemon.json
3. 在配置文件中添加网络配置:在打开的配置文件中添加以下内容,将 `<新的网络段>` 替换为您想要使用的新网络段。
   ```json
   {
     "bip": "<新的网络段>"
   }
   ```
   例如,如果您想要将网络段修改为 `172.20.0.0/16`,则添加以下内容:
   ```json
   {
     "bip": "172.20.0.0/16"
   }
   ```
4. 保存配置文件并关闭编辑器。
5. 启动 Docker 服务:使用以下命令启动 Docker 服务:
   sudo systemctl start docker
6. 验证网络段是否已修改:运行以下命令检查 Docker 默认网络是否使用了新的网络段:
   docker network inspect bridge

修改之后的docker网段:
 

然后再修改B账号下面服务器的内网IP:如何修改私有IP地址_云服务器 ECS(ECS)-阿里云帮助中心 (aliyun.com)
执行步骤:
停止运行的服务器——找到目标实例,在操作列选择> 网络和安全组 > 修改私有IP 

但是在填写新的内网IP的时候,发现只有在交换机的IP段里面,而这个交换机的IP段却和A账号的docker网段重叠了,所以需要换一个交换机:为云上专有网络VPC创建并配置虚拟交换机vSwitch_专有网络VPC(VPC)-阿里云帮助中心 (aliyun.com)
随便填

创建好交换机以后,ECS服务器需要绑定这个交换机
 

然后启动服务器就能看到内网IP被修改了 

创建VPC对等连接:如何创建VPC对等连接_专有网络VPC(VPC)-阿里云帮助中心
 

然后在B账号的VPC对等连接里面选择添加,添加以后两个VPC就初步建立联系了,后面就需要在两个VPC下面配置路由条目:
 

  

然后在两个账号下面的服务器上面测试连通性,执行ping 内网ip:
 

能ping通就表示VPC对等连接建立成功,如果执行ping 内网ip以后啥都没输出则表示没有建立成功,如果输出Destinnation Host Unreachable则表示docker网段和对端的内网IP冲突了。

项目配置ALB以后,后端网关服务一直报404错误的问题

背景:我们的后端接口要给到上下游,所以为了访问方便和负载均衡,我们就配置了ALB,但是配置ALB以后,后端网关服务一直报404错误

原因:在配置ALB时,由于健康检查的路径在配置的时候使用的是默认的根路径,也就是/:
 

但是后端网关服务,常看网关健康的路径是/health/test

所以导致ALB根据/路径去请求网关服务的时候一直报404错误,后面将ALB健康检查设置为/health/test以后就正常了 

使用idea向gitlab时遇到的问题

在使用idea向gitlab提交代码时,系统提示输入token,然后url显示的gitlab的地址,通过观察发现是通过http的方式来关联的,显然不对。本地和远程是通过SSH密钥的方式来关联的,所以需要在Gitlab上面配置SSH,下面是文档链接GitLab 配置 SSH 密钥(详细流程) - 掘金 (juejin.cn)

第二步就是到gitlab中copy项目的链接(SSH)

然后需要在项目的根目录里面修改git目录里面的config配置

然后在提交代码就可以了。但是我还遇到了一个问题,我在新建分支以后,提交代码时,没有关联到远程的分支,导致推送失败,也就是说新建的分支,在提交代码的时候,需要关联到远程的分支

 git push --set-upstream origin dev-wl 

但是在我执行这段命令的时候,显示 Updates were rejected because the tip of your current branch is behind

也就说当前我的这个分支要落后远程相关分支的一些提交,所以需要拉取远程变更,然后解决潜在的冲突(如果远程分支和您的本地分支在相同文件的相同区域进行了修改,git pull 可能会导致合并冲突。此时,Git会在冲突文件中插入特殊标记(<<<<<<<, =======, >>>>>>>),指示冲突区域。您需要手动编辑这些文件,决定保留哪些更改,然后删除冲突标记)、最后在重新拉取,推送即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼吐泡泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值