删除git pull冲突文件
删除git pull
冲突文件
如zig在某次更新时,出现如下错误:
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 653 bytes | 32.00 KiB/s, done.
From https://hub.fastgit.org/ziglang/zig
81e2034d4..594271f8d master -> origin/master
Updating 81e2034d4..594271f8d
error: Your local changes to the following files would be overwritten by merge:
CMakeLists.txt
doc/langref.html.in
src/AstGen.zig
src/Sema.zig
src/Zir.zig
test/behavior.zig
test/compile_errors.zig
Please commit your changes or stash them before you merge.
Aborting
编译gitmerge.vsh
脚本,完成自动删除冲突文件、重新拉取文件:
#!/usr/bin/env -S v run
import io.util
println('gitmerge v0.0.3 by Zhuo Nengwen at 2021-09-04\n')
// 获取git pull错误内容
mut f, file_name := util.temp_file() ?
f.close()
system('git pull 2>$file_name')
// 检查是否有冲突文件
content := read_lines(file_name) ?
if content.len > 3 {
mut start := 0
for content[start] != 'error: Your local changes to the following files would be overwritten by merge:' {
start++
}
mut end := content.len - 1
for content[end] != 'Please commit your changes or stash them before you merge.' {
end--
if end < 0 {
break
}
}
// 如果冲突太多,最后只有一行Aborting信息
if end < 0 {
end = content.len - 1
for content[end] != 'Aborting' {
end--
}
}
// 删除所有冲突文件
for name in content[start + 1..end] {
new_name := name.trim_space()
cmd := 'rm $new_name'
println(cmd)
system(cmd)
}
// 重新拉取
println('')
system('git pull')
}
// 删除临时文件
system('rm $file_name')