如果当前分支具有未提交的更改,如何防止git merge

时间:2016-02-21 23:12:20

标签: git

即使当前分支有未提交的更改,也可以git merge。例如:

git checkout featureA
ls >> foo
git commit -am "added featureA"
git checkout dev
ls >> bar                    # current branch now has uncommitted changes
git merge featureA

我想知道是否可以将git配置为始终失败,只要当前分支有未提交的更改,只是为了使合并更安全。

1 个答案:

答案 0 :(得分:0)

我的第一个想法是声明一个Git别名来覆盖merge命令,并在执行操作之前检查工作目录和索引的状态。

事实证明,用Git别名覆盖现有的Git命令是不可能的(有关详细信息,请参阅this question),但您可以定义一个shell级别别。

为了简单起见,可能最好定义一个名为safemerge的别名。您还可以定义一个额外的别名,以便轻松检测干净状态。

.gitconfig

中将这些定义为别名
isclean = !(git status --porcelain | grep . && exit 1 || exit 0)
safemerge = !git isclean && git-merge

现在,当您进行合并时,您可以运行git safemerge,如果您有未提交的更改,则不会进行合并。