git pull更新错误解决办法

Your local changes to the following files would be overwritten by merge

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.

参考http://blog.youkuaiyun.com/zwhfyy/article/details/8625228

如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash
git pull
git stash pop

然后可以使用git diff -w +文件名 来确认代码自动合并的情况.


反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

git reset --hard
git pull

其中git reset是针对版本,如果想针对文件回退本地修改,使用



untracked working tree file

编写脚本自动编译并部署时的注意

如果想在C2上编写脚本自动从S1上获取最新代码时,要注意:

1.首先之前产生的公钥不能设密码,否则每次git pull的时候都会要求输入密码。

2.不要将项目中的编译中间文件提交到S1上,比如CMake工程里面的build目录的文件,Maven工程里面的target目录里面的文件。否则下次在C2等客户端用git pull会报类似于这样的错误:

error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.

需要执行下面的命令才能修复:

git reset --hard HEAD  
git clean -f -d  
git pull



### 解决方案:解决 `git pull` 出现错误的问题 当执行 `git pull` 时,可能会因为分支分叉(divergent branches)、冲突或其他原因导致错误。以下是针对常见问题的具体解决方案。 #### 1. 分支分叉问题 如果在执行 `git pull` 后收到类似以下错误消息: ``` fatal: Need to specify how to reconcile divergent branches. ``` 这是因为在本地和远程分支之间存在未同步的更改。可以通过以下两种方式之一解决问题: ##### 方法一:使用合并策略 允许 Git 自动生成一个合并提交来解决分歧: ```bash git config pull.rebase false git pull origin <branch-name> ``` 这里 `<branch-name>` 是目标分支名称,例如 `dev` 或 `main`[^2]。 ##### 方法二:使用变基策略 将本地更改应用到最新拉取的远程更改之上,保持线性的提交历史: ```bash git config pull.rebase true git pull origin <branch-name> ``` 这种方法适用于团队更倾向于清晰的提交历史的情况[^2]。 #### 2. 文件冲突问题 如果在执行 `git pull` 时遇到文件冲突,Git 会暂停并提示手动解决冲突。以下是具体步骤: ##### 步骤一:查看冲突文件 运行以下命令查看哪些文件发生了冲突: ```bash git status ``` ##### 步骤二:手动编辑冲突文件 打开发生冲突的文件,找到标记为以下内容的部分: ``` <<<<<<< HEAD // 当前本地版本的内容 ======= // 远程分支上的内容 >>>>>>> branch_name ``` 删除不必要的部分,并保存最终版本。 ##### 步骤三:标记冲突已解决 完成修改后,通知 Git 冲突已被解决: ```bash git add <conflicted-file> ``` ##### 步骤四:继续合并或变基 如果是合并冲突,继续合并流程: ```bash git commit ``` 如果是变基冲突,继续变基流程: ```bash git rebase --continue ``` 如果决定放弃当前操作,可以终止合并或变基: ```bash git merge --abort git rebase --abort ``` #### 3. 强制覆盖本地更改 如果确实需要丢弃本地更改并完全采用远程版本,可以按以下步骤操作: ##### 步骤一:重置本地分支至远程状态 ```bash git fetch origin git reset --hard origin/<branch-name> ``` ##### 步骤二:再次拉取远程代码 ```bash git pull origin <branch-name> ``` 注意:此方法会丢失所有尚未提交的本地更改,请谨慎使用[^3]。 #### 4. 提交历史混乱问题 有时,在执行 `git pull` 之前可能存在未完成的提交,导致无法正常拉取。这种情况下,可以根据需求选择以下任一方法: ##### 方法一:跳过当前提交 如果认为当前提交无意义,可以直接跳过它: ```bash git rebase --skip ``` ##### 方法二:中止当前操作 如果想回到原始状态,取消正在进行的操作: ```bash git rebase --abort ``` #### 5. 配置建议 为了避免频繁出现问题,可以在全局范围内设置默认行为: ```bash git config --global pull.rebase false ``` 或者启用自动解决简单冲突的功能: ```bash git config --global rerere.enabled true ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值