git处理文件冲突的方法

今天我们来讨论一下当我们期望更新本地仓库代码与远程仓库一致时,发生冲突怎么办?


首先我在git上修改一下文件conflict_test

 

 
7110579-d6eb00acfa43a637.png
 

同时在本地仓库修改一下文件conflict_test

 

 
7110579-a31f1101d3019df6.png
 

接着我们进行pull操作:

 

 
7110579-9570a8f9f9c2f6e8.png
发生冲突,并显示了冲突的位置

这时我们可以有几个做法:

1、如果自己本地做的修改无关紧要,可以选择让远程仓库的代码来覆盖本地仓库的代码:

git checkout -- conflict_test(冲突的文件名)    

git pull origin master(发生冲突的分支名)  

 

 
7110579-073ad055d833fe3f.png
 

在做这些操作之前一定要搞清楚我们是处于哪一个分支,就比如我当前是在master分支上面做了修改文件的操作,而我还有一个branchtest分支,如果我直接pull 远程的branch,是不会有任何冲突,文件也不会有任何改变的(因为我是在master分支上做了修改)。

 

 
7110579-b50d1f160e13382f.png
 

注意:在这里我们所做的修改和本地仓库还是不一致的,还需要将我们做的修改commit到本地仓库,而push操作则是将修改推送到远程仓库。

2、一般我们从git上面pull代码的时候,如果没有冲突的发生,git会帮我们自动合并代码,当冲突发生后,就需要我们手动处理冲突了:首先我还是和上一步一样,来制造一个冲突。

 
7110579-43841b2acd09faea.png
本地编辑
 
7110579-b7fca08745509bd2.png
 

 

然后我们pull代码:

 git pull origin master   

 

 
7110579-e12768cd94cf896b.png
出现冲突

git status       //查看当前状态

 

 
7110579-2b06decce306f7aa.png
 

根据提示,我们先将所做的修改提交到本地仓库:

 

 
7110579-0c243f6762f49370.png
 

再pull一次,就会发现

 
7110579-17a159e25033a0ef.png
git已经将我们的发生冲突的地方标记出来了

我们再去发生冲突的文件进行处理:

 

 
7110579-b07e5770adefe950.png
自行合并代码

处理完冲突之后,一定要记得将修改好的文件提交到远程仓库,才可以继续pull代码:

git add .       //添加当前工作目录文件到index(提交队列)

注:当然如果你不想一次性提交所有文件 可以选择一个个加  :

git add    目录\文件名

git commit -m "some comments"     //生成一个commit

git push  origin master                      // 推送远程仓库


又看到一种还原的方法:全部还原,同步于远程仓库

git fetch --all

git reset --hard origin/master

 


 

到这里git冲突处理先告一段落吧,感觉自己还不是很太理解远程仓、本地仓和自己的工作区之间的关系,等弄懂了在来分享。

### 解决 Git 中的代码冲突Git 的使用过程中,当多个开发者对同一个文件的同一部分进行修改,并尝试合并这些更改时,Git 无法自动判断哪一部分的修改应该被保留,这时就会发生代码冲突。解决这些冲突是确保代码库一致性和稳定性的关键步骤。 冲突通常发生在合并分支或拉取远程更新时。Git 会在冲突文件中标记出冲突区域,开发者需要手动检查并决定保留哪些更改。例如,在合并分支时,如果两个分支都修改了同一个文件的相同行,Git 会提示冲突并等待用户解决[^1]。 #### 使用命令行解决冲突 打开终端并进入项目目录,执行以下命令查看哪些文件存在冲突: ```bash git status ``` 找到冲突文件后,打开该文件Git 会在冲突区域插入冲突标记,如 `<<<<<<<`, `=======`, 和 `>>>>>>>`,分别表示当前分支的更改、分隔符以及合并进来的更改。例如: ```text <<<<<<< HEAD This is a line from the current branch. ======= This is a line from the incoming changes. >>>>>>> feature-branch ``` 在上述示例中,开发者需要手动决定保留哪一部分的更改,并删除冲突标记。完成修改后,保存文件并执行以下命令将文件标记为已解决冲突: ```bash git add app.js ``` 如果有多个冲突文件,可以使用以下命令一次性添加所有解决后的文件: ```bash git add . ``` 最后,执行提交命令以完成合并: ```bash git commit -m "Merge feature/new-version and resolve conflicts" ``` #### 使用图形化界面解决冲突 在图形化界面中,如 VSCode,用户可以在源代码管理面板中查看冲突文件冲突文件通常会显示为“冲突”状态。点击冲突文件后,VSCode 会提供一个可视化的界面来对比和解决冲突。用户可以在编辑器中直接选择保留哪些更改,并删除冲突标记。完成修改后,点击“解决”按钮或使用“添加”按钮将文件标记为已解决。 #### 避免冲突的常见做法 在团队协作中,频繁地从远程仓库拉取最新代码可以减少冲突的发生。在进行合并操作前,建议先执行以下命令获取远程更新: ```bash git pull origin main ``` 此外,使用 `git stash` 可以临时保存未提交的更改,以便在拉取更新后再恢复这些更改,从而避免冲突: ```bash git stash git pull origin main git stash pop ``` 如果在合并过程中出现冲突Git 会提示类似以下的信息: ```text error: Your local changes to the following files would be overwritten by merge: protected/config/main.php Please, commit your changes or stash them before you can merge. ``` 此时需要先提交或暂存本地更改,再继续合并操作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值