Git merge 冲突以始终获取最新文件

标签 git git-merge

如何在没有提示的情况下通过获取最新文件(最新更改的时间戳)来解决 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/

相关文章:

git - 当一个分支有另一个不想要的恢复时 merge git 分支

git - 不同操作系统之间的行结束转换如何与 git core.autocrlf 一起工作

git - github 上的 pull 请求 - 显示从 master 重新提交的提交

java - 用于生产、阶段、测试和开发部署的 Bitbucket 主分支

git - 'git branch -r' 和 'git remote show origin' 的区别

git - Bitbucket:远程 repo 中的冲突,无法弄清楚如何解决

Android Studio - GitHub Push 无法正常工作

git恢复 merge : determine which parent is which (-m 1 vs -m 2)

Git:将分支 merge 到master,或将master merge 到分支

git - 我有两个内容不同的 git 分支。为什么 git 不 merge 它们?它说 "Already up-to-date."