首页 > 解决方案 > git pull 并丢失任何本地更改

问题描述

我有一个 CI 系统,它从 Github 中提取代码进行测试。它从 repo 的克隆开始,然后,当出现新的提交时,它会被赋予提交的哈希值并执行以下操作:

git pull --no-rebase origin <hash>

git -c advice.detachedHead=false checkout --no-progress <hash>

没有对代码进行任何更改,没有任何东西被推送,只是被拉取。

但是,每隔一段时间git pull就会因合并冲突而失败:

Pulling is not possible because you have unmerged files. hint: Fix them up in the work tree, and then use 'git add/rm <file>' hint: as appropriate to mark resolution and make a commit. fatal: Exiting because of an unresolved conflict.

发生这种情况时,我尝试git reset --hard将其作为恢复机制并pull再次执行,但这无济于事,相同的合并冲突会阻止其pull工作并且我被卡住了。

谁能告诉我我缺少的一点 git 魔法,它总是会让每一次pull成功,消除 [不存在的] 本地更改?

标签: gitgithubmerge-conflict-resolution

解决方案


如果您只想对上述修订进行测试,为什么要拉入本地分支(并面对尝试合并内容时发生的这种混乱)?尝试获取并签出:

git fetch origin
git checkout <hash>

应该这样做。不再需要处理冲突或其他问题。如果可能,您甚至应该考虑git clean -f在此过程中尝试 a,以便作为(先前)构建过程的一部分生成的文件也消失。


推荐阅读