如何在没有提示的情况下通过获取最新文件(最新更改的时间戳)来解决 git 冲突?
我正在用 git 后端构建一个同步脚本,我从来不想真正 merge 一个文件,只是用最后编辑/删除/添加的那个覆盖所有旧副本。
编辑:对于最新文件,我的意思是包含该文件的最新提交。
最佳答案
我想出了这个可以满足我要求的小型 merge 驱动程序。出于我的目的,它被硬编码到“master”分支和“origin”远程。我不知道如何使这些部分动态化。
#!/usr/bin/env sh
if git merge-file -p -q "$2" "$1" "$3" > /dev/null;
then git merge-file "$2" "$1" "$3";
else
MINE=$(git log --format="%ct" --no-merges master -1);
THEIRS=$(git log --format="%ct" --no-merges origin/master -1);
if [ $MINE -gt $THEIRS ];
then git merge-file -q --ours "$2" "$1" "$3";
else git merge-file -q --theirs "$2" "$1" "$3";
fi
fi
简而言之,我使用 git-log 查找最后一次提交,该提交不是 merge ,格式为 UNIX 时间戳,然后我比较它们并使用我们的或他们的版本运行自定义 git-merge。
作为一个小奖励,它首先检查是否可以在不发生冲突的情况下 merge 文件。如果可能,它会 merge 这两个文件。
关于Git merge 冲突以始终获取最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607125/