SourceTree 解決冲突 Please commit your changes or stash them before you merge.

5,208 阅读2分钟

目录:

  1. 本机环境
  2. 通过 Sourcetree 拉取代码时提示冲突信息

一、本机环境

本机系统: Mac
git:  2.24.1   # git --version 查看

二、通过 Sourcetree 拉取代码时提示冲突信息

原因:同分支下,其他伙伴修改的 xx 文件,本地也修改了 xx 文件

2.1、报错如下图

2.2 报错信息说明

error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.(提示的文件)
Please, commit your changes or stash them before you can merge. Aborting

翻译如下:
对以下文件的本地更改将被合并覆盖:
请在合并之前提交更改或将其存储。中止

2.3 当然正常操作不能按照上述提示进行

应该需要先拉取代码,再提交本地文件

解决办法:在项目目录下打开命令窗口,参考 这里

打开终端方法一:在当前 Sourecetree 窗口右上角点击终端即可

打开终端方法二: 双击本地仓库目录,选择 新建位于文件夹位置的终端窗口

输入以下命令:

git stash 
git pull
git stash pop

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个 stash 的内容,所以用栈来管理,pop 会从最近的一个 stash 中读取内容并恢复。
git stash list: 显示 Git 栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空 Git 栈。此时使用 gitg 等图形化工具会发现,原来 stash 的哪些节点都消失了。

2.4 解决,不过遇到一点小插曲

多了很多 .DS_Store 文件
.DS_Store (英文全称 Desktop Services Store) 是一种由苹果公司的 Mac OS X 操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。

解决办法:

1、删除 .DS_Store

  • 需要删除磁盘上的 .DS_Store,删除当前目录及其子目录下的所有 .DS_Store 文件:

  • find . -name '*.DS_Store' -type f -delete
    

2、在仓库目录下将 .DS_Store 加入到 .gitignore

3、禁用或启用自动生成:

  • defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE  // 禁止.DS_store生成
    
  • defaults delete com.apple.desktopservices DSDontWriteNetworkStores // 恢复.DS_store生成
    

写给自己的随笔,有问题欢迎指出