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

如果当前分支有未提交的更改,如何防止git合并,git,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配置为始终

即使当前分支有未提交的更改,也可以
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配置为始终失败,只是为了使合并更安全。

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

事实证明,不可能用Git别名覆盖现有Git命令(有关更多信息,请参阅),但可以定义shell级别的别名

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

.gitconfig
中将这些定义为别名:

isclean = !(git status --porcelain | grep . && exit 1 || exit 0)
safemerge = !git isclean && git-merge

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

是否将它们添加到索引中?否则,我不确定这怎么不安全。如果事情不安全,Git将避免合并(另请参阅“合并前检查”:。