首页 > 其他分享 >Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)

时间:2023-12-18 14:04:59浏览次数:18  
标签:文件 git 修改 Git 本地 远端 推送

背景

多人使用同一个远端仓库开发项目,这时候直接推送代码到同一远端仓库,然后就会出现一系列的文件修改冲突情况,接下来我们具体情况具体分析一下。本文的主要围绕着下面两种情况展开的,在阅读之前可以先自己思考一下问题的答案是什么?

  • 不同的人修改同一分支相同的文件的相同区域,你会怎么解决冲突?
  • 不同的人同时修改同一文件的文件名和文件内容,你会怎么解决冲突?
  • 不同的人修改同一分支同一文件的名称,你会怎么解决冲突?

不同的人修改同一分支相同的文件的相同区域

今天小红和小绿都在master分支上做开发,这次他们修改的是同一个文件的同一区域,先提交的小绿还是很吃香的,后提交的小红还是冲突了,这时候该怎么办呢?

首先小红要更新代码(git pull),然后发现有冲突的提示,但是 Git 还是做了自动合并,但是它把两次修改的内容都保留在文件中,由用户处理决定如何文件内容。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_后端

这时候冲突文件的状态会发生改变,变成未添加的状态,所以改变以后小红需要重新添加提交冲突的文件,但是会多一次处理冲突的提交记录。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_02

那是否有办法减少这次提交记录呢?

首先我们要知道一点,遇到这种冲突情况时,在提交修改的文件前,我们直接拉取远端代码的时候会提示错误。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_文件名_03

注意看提示信息,在合并冲突前除了提交代码还有一个stash操作。

那就是我们先执行git stash,把本地的修改保存起来,然后执行git pull更新本地代码,接着执行git stash pop恢复本地的修改,这时候会发现自动合并冲突的提示,我们只要解决本地冲突的文件,接着添加文件即可,提交记录只有一次。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_文件名_04

然后我们可以看一下远端的提交记录,如下所示:

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_05

最后总结一下不同的操作流程:

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_06

不同的人同时修改同一文件的文件名和文件内容

今天小红和小绿都在master分支上做开发,这次他们修改的还是同一个文件,小绿直接修改了A文件的名称,然后推送到远端仓库。小红修改了A文件的内容,随后推送到远端仓库,发现报错了,这时候小红该怎么办呢?

我们先说第一种解法,推送的时候发现报错,这时候只能补救,更新本地代码(git pull),然后再推送到远端仓库。git可以帮助我们处理不同的人同时了文件名和文件内容的情况。

那么同样的,我们也可以在推送代码前更新一波本地代码,然后再推送到远端,这样还可以减少推送错误出现的几率。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_后端_07

因为存在合并文件解决冲突的存在,所以这里也会多一条合并文件的记录,如下所示:

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_08

如果要减少这种情况,又要使用到我们上面提到的命令(git stash),先把本地的修改保存起来,然后再更新代码。

  1. git stash保存本地修改
  2. git pull更新本地代码
  3. git stash pop还原本地修改,并清楚stash中的记录
  4. 执行git add xxxgit commit -m提交修改文件
  5. git push推送代码到远端

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_09

我们看一下远端的提交记录,发现没有之前那种合并的提交记录了。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_文件名_10

总结操作流程:

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_推送_11

不同的人修改同一分支同一文件的名称

今天小红和小绿都在master分支上做开发,这次他们修改的还是同一个文件,小绿直接修改了A文件的名称,然后推送到远端仓库。

小红也修改了A文件的名称,随后推送到远端仓库,这时候肯定报错了,此时此刻小红该怎么办呢?

还是使用通用的方法,更新远端的最新代码到本地仓库,然后做冲突处理,不过这次处理的过程会有些不一样了。因为名称被不同的人改了,这下git都被玩懵了,它会把不同名称的文件更新到本地,然后需要我们自己选择保留哪些文件,删除哪些文件。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_推送_12

这里的删除和保留不是在资源管理器中操作!不是在资源管理器中操作!不是在资源管理器中操作!!!重要的事情说三遍,而是使用git的命令:

git add 文件名 #保留需要的文件
git rm 文件名 #删除不需要的文件

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_git_13

然后再执行二连操作(git commit、git push)即可。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_推送_14

当然我们也可以在commit之前更新远端仓库的代码到本地,一顿操作之后再推送,流程如下所示:

  1. git pull更新文件到本地
  2. 不同名称的文件更新到本地,开始手动处理文件
  3. git add 文件名保留需要的文件,git rm 文件名删除不需要的文件
  4. git commit -m提交修改文件
  5. git push推送代码到远端

最后使用流程图总结一下操作:

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_后端_15

但是不管上面哪种操作,在提交记录上,我们可以看到这里本地(test用户)有两次修改记录推送到远端仓库。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_后端_16

当然还有更加优雅的操作,把本地的两次提交记录变成一次,同样的是使用git stash操作。

操作步骤:

  1. git stash暂存本地修改
  2. git pull更新远端最新代码到本地
  3. git stash pop还原本地修改
  4. git addgit rm处理冲突文件
  5. git commit提交本地这次修改
  6. git push推送到远端

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_推送_17

我们接着来看一下远端仓库的提交记录,这次发现少了一次提交记录。

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_后端_18

操作流程图

Git|Git推送代码到远端时发现文件冲突,该怎么办?(二)_推送_19

绝杀技,通吃一切

同学们,你们有没有发现这里有一个绝杀技通吃一切问题,向小绿学习,先下手为强,修改的代码及时提交。

标签:文件,git,修改,Git,本地,远端,推送
From: https://blog.51cto.com/u_15812995/8872910

相关文章

  • Github 工具栏
    漏洞及渗透练习平台:WebGoat漏洞练习环境      github.com/WebGoat/WebGoat       git地址:https://github.com/WebGoat/WebGoat.gitDamnVulnerableWebApplication(漏洞练习平台)数据库注入练习平台 用node编写的漏洞练习平台,likeOWASPN......
  • git hook 和 Husky工具
    githook背景git:除了作为版本控制之外,还能执行自定义操作----githook,它存在于.git文件夹下的hook文件夹,里面有很多以.sample结尾的demo文件,要执行它,只需要把文件名后面的的sample删了。应用场景:(1)实现自动编译(2)自动删除仓库中的编译代码Husky工具介绍是一个专门......
  • 【解决Git分支合并冲突】
    1.了解分支合并冲突在多人协作开发中,每个人都可以创建自己的分支来进行工作。当你试图将一个分支的更改合并到另一个分支时,Git会尝试自动合并更改。但是,如果两个分支都修改了同一部分的代码,Git就无法自动决定应该保留哪个更改,这就会导致合并冲突。2.解决分支合并冲突的步骤步......
  • 删除远端消息, 重进会话仍然取回已删除的消息
    用户调用删除函数,服务器不会判断对应的sentTime是否存在,仅仅是使用sentTime直接进行消息删除,然后返回操作成功;用户删除远端消息时,需要保证sentTime的合法性-(void)deleteRemoteMessage:(RCConversationType)conversationTypetargetId:(NSString*)targetIdmessages:......
  • 个人优化 Github Pages 博客网站访问速度记录
    使用GithubPages可以方便地搭建自己的静态网站,详细过程参考我的这篇文章。使用hugo和GithubPages搭建个人博客但由于众所周知的原因,此方法搭建的博客在国内访问速度不佳。因此考虑采用一些方法来加速访问,主要思路是使用CDN加速网站的静态资源。对于不同的静态资源,......
  • Git本地代码仓库关联远程仓库
    需求背景我在本地创建了一个项目,并且编写了一些代码后,通过使用Git初始化了本地仓库。此时,我又在GitHub上创建了一个仓库,并添加了一个README文件。现在,我想把本地的仓库与GitHub上的仓库关联,并将代码推送到远程仓库。这时候应该怎么办?操作步骤1、在本地项目的目录下初始化Git仓库git......
  • git命令总结
    本地命令作用注意git-v查看git版本 gitinit初始化git仓库 gitadd文件标识暂存某个文件文件标识以终端为起始的相对路径例:gitaddpage/login/index.htmlgitadd.暂存所有文件 gitcommit-m'说明注释'......
  • Guide to Arduino & Secure Digital (SD) Storage.
    原文:https://docs.arduino.cc/learn/programming/sd-guideHardware&SoftwareRequiredArduinoBoardwithSDCardSlot*ArduinoIDE(online or offline).FormattedSDCard*Theboards/shieldsthathaveanSDcardslotarelistedbelow:MKRZeroMKRIoT......
  • [ABC135D] Digits Parade
    题目意思:给你一个数(1<=数的位数<=1e5),中间包含任意位'?','?'可以是'0'~'9'中的任意数,求有满足被 13整除后余5的数 的个数。解题思路:用dp解,dp数组记录第一位到第 i 位数为止的数整 除13余k 的个数,最后输出最后一位 整除13余5的数 的个数。话不多说,直接上代码:#incl......
  • 02-git操作命令--git commit
    gitcommit建议分为2步来完成,尽量不要使用gitcommit.来提交代码,增加容错gitcommit当我们修改了本地仓库某写文件后,git会自动生成这些修改后未跟踪的文件:从上面的图片可以看到,我修改了当前目录下的saas/saas_method.go文件并未提交暂存,使用下面的命令提交修改至暂存区:git......