git pull时本地文件和服务器文件冲突解决方法——git stash和git stash pop

本文详细介绍了在使用Git进行代码更新时遇到冲突的解决方法,包括如何使用git stash命令临时存储工作区更改,避免在合并代码时丢失未提交的修改。同时,深入解析了git stash的多种用法,如保存、应用、列出、删除暂存的更改,帮助开发者更高效地管理项目开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git pull时本地文件和服务器文件冲突解决方法:

在git pull代码时,出错信息如下:
error: Your local changes to 'contextTempl.java' would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.
解释:这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。
可以使用git stash命令进行处理,步骤如下:
(1)先将本地修改存储起来
git stash
(2)暂存了本地修改之后,就可以git pull了。
git pull
(3)还原暂存的内容
git stash pop

git stash

我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能。下面来看一下git stash命令的常见用法。

基础命令:

保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'可以添加一些注释。
$git stash
$do some work
$git stash pop

git stash进阶:

git stash save "work in progress for foo feature"

当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,

’git stash list’ 命令可以将当前的Git栈信息打印出来:

(torch_20201223) wangMacBook-Pro:feedrec wangzhenzhu$ git stash list
stash@{0}: On model_dev: 0508切回mmaster合并代码
stash@{1}: WIP on model_dev: 7b2123b cls
stash@{2}: WIP on understand_moregpu: 76a4d9f fix class config
stash@{3}: WIP on understand1: 9633c58 cpu to gpu
stash@{4}: WIP on understand1: 94a32f7 V4: 添加ch加载样本

你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。

git stash          # save uncommitted changes
# pull, edit, etc.
git stash list     # list stashed changes in this git   显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git show stash@{0} # see the last stash 
git stash pop      # apply last stash and remove it from the list

git stash --help   # for more info

git stash pop [–index] [stash_id]

  • git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
  • git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
  • git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
    通过git stash pop命令恢复进度后,会删除当前进度。

git stash apply [–index] [stash_id]

除了不删除恢复的进度之外,其余和git stash pop 命令一样。

git stash drop [stash_id]

删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。

git stash clear

删除所有存储的进度。

 

git 切换分支时:error: The following untracked working tree files would be overwritten by checkout

我在 git pull origin mt6580_aosp_trunk 做更新的时候。出现了一下错误:
error: The following untracked working tree files would be overwritten by merge:
vendor/huaqin/resource/3rdPart/aw700_default/system/thirdPart.mk

Please move or remove them before you can merge.

解决方法:

git clean -d -fx "vendor/huaqin/resource/3rdPart/aw700_default/system/thirdPart.mk"
其中
x -----删除忽略文件已经对git来说不识别的文件
d -----删除未被添加到git的路径中的文件
f -----强制运行

 

 

 

参考:

1.https://blog.youkuaiyun.com/ican87/article/details/29869567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值