git - 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
成功,消除 [不存在的] 本地更改?
解决方案
如果您只想对上述修订进行测试,为什么要拉入本地分支(并面对尝试合并内容时发生的这种混乱)?尝试获取并签出:
git fetch origin
git checkout <hash>
应该这样做。不再需要处理冲突或其他问题。如果可能,您甚至应该考虑git clean -f
在此过程中尝试 a,以便作为(先前)构建过程的一部分生成的文件也消失。