(转)使用git stash解决git pull时的冲突

在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:

error: Your local changes to 'c/environ.c' would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.

这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。

处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理。

1、先将本地修改存储起来

$ git stash

这样本地的所有修改就都被暂时存储起来 。

 $ git stash list                 可以看到保存的信息:


git stash暂存修改

其中stash@{0}就是刚才保存的标记。

2、pull内容

暂存了本地修改之后,就可以pull了。

$ git pull

3、还原暂存的内容

$ git stash pop stash@{0}

系统提示如下类似的信息:

Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c

意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。

4、解决文件中冲突的的部分

打开冲突的文件,会看到类似如下的内容:

 

git冲突内容

其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。

解决完成之后,就可以正常的提交了。

5 删除stashgit stash drop <stash@{id}>  如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。git  stash clear 是清除所有stash,整个世界一下子清净了!

6 git stash pop  与 git stash apply <stash@{id}> 的区别。

当我使用git stash pop 和 git stash apply 几次以后,我发现stash  list 好像比我预计的多了几个stash。于是我便上网去了解了一下这两个命令的区别。原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id。对于有点强迫症的我来说,是容不下越来越多的陈旧stash id 仍然存在的,所以我更习惯于用git stash pop 命令。 

转自:

http://www.01happy.com/git-resolve-conflicts/

收获不会与付出成反比 by juandx
### 解决 Gitstash 引发的冲突问题 当使用 `git stash` 缓存更改后,执行其他操作(如 `git pull` 或者切换分支),可能会引发冲突。以下是针对这种情况的具体解决方案。 #### 使用场景描述 假设当前工作目录中有未提交的修改,这些修改可能与即将从远程仓库拉取的内容存在冲突。此可以先将本地改动存储起来,再进行更新或者合并操作。具体流程如下: 1. **保存当前的工作状态** 执行以下命令以缓存当前的更改: ```bash git stash ``` 2. **获取最新的远程代码** 接下来,尝试同步最新版本的代码: ```bash git pull ``` 如果在此过程中出现了任何冲突,则需要按照提示逐一解决这些问题[^1]。 3. **重新应用之前隐藏的变化** 当所有外部变更都已成功集成之后,可以通过下面这条指令把先前暂存的数据恢复回来: ```bash git stash pop ``` 此处需要注意的是,“pop”不仅会取出最近的一次 stashed 修改还会将其从列表里移除;如果你只是想查看而不希望立即销毁记录的话,可以选择单独调用 apply 命令代替它[^3]。 4. **处理潜在的新一轮矛盾情况** 在某些特殊情况下,即使已经完成了上述步骤仍有可能再次遇到新的分歧现象。这就需要依赖 IDE 工具辅助完成最终的手动调整过程,并确保项目能够正常编译运行无误后再继续后续动作[^4]。 以上便是整个基于 Stash 技术应对复杂情境下可能出现的各种挑战的标准做法概述。 ```python def resolve_git_stash_conflict(): """ A function demonstrating the process of resolving conflicts after using git stash. Steps include: 1. Saving changes with 'git stash' 2. Pulling latest updates from remote repository via 'git pull', addressing any arising issues during this phase as necessary per [^1]. 3. Reapplying stored modifications by executing either 'git stash pop' or alternatively applying them without removal through other means according to guidance provided within reference material marked at position three above i.e., . 4. Handling additional possible discrepancies that may arise post-application step utilizing appropriate software development environments alongside ensuring successful compilation before proceeding further along lines suggested under fourth marker point located earlier hereinbefore mentioned references section namely entry number four specifically denoted thereat viz-a-viz . Returns: None """ ``` #### 注意事项 - 若发现某个特定版本无需保留可考虑清除对应条目例如利用类似这样的语法结构实现目标即:`git stash drop <specific-stash-id>`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值