如果从不同的分支提取,git将收到警告



如果我在分支"x"上并试图从分支"y"中提取,我如何让git向我发出警告?

举个例子;

考虑到我目前在当地的工作分支机构是x,我正在发布:

git pull origin y

在这一点上,我希望git发出类似于"您正在获取不同的分支并将其合并到当前工作分支中。您想继续吗?(y/n)"的警告

这可能吗?可能有一些配置选项?

我知道如何纠正这个错误,但我宁愿在犯这样的错误之前得到警告。

不可能在拉取请求之前停止git处理并接受用户输入。我的意思是,这是可能的,但为此,您必须对git进行一些更改,并从源代码构建它。我不会走这条路。

git hooks中使用条件语句有一个妙招。您可以在githook中使用Ruby(或任何其他语言)使其成为有条件的。这在pre-commit钩子或在任何实际处理发生之前调用的钩子中效果最好。在git pull的情况下,唯一可以锁定的钩子是post-merge钩子,并且只有在整个处理完成后才会调用它。因此,真正询问用户在合并分支后是否要合并另一个分支是没有意义的,对吧:)但是,您可以向他们显示一条消息。

为此,请使用以下内容:

#!/usr/bin/env ruby
branch=$(git rev-parse --symbolic --abbrev-ref $1)
if branch != $GIT_DIR/ORIG_HEAD
puts "You merged a different branch dim wit"
end

现在,我要做的是比较合并后的分支是否与原始分支名称相同,如果不相同,则向用户显示一条消息。这将在git合并摘要中显示为remote

同样,我不确定这是否有效,因为我真的不确定git rev-parse --symbolic --abbrev-ref $1是否会给你分支名称。

这也是一个建议,而不是你问题的解决方案:(

如果您的当前分支已设置为跟踪上游分支(如git branch --set-upstream test origin/test),则您只需:

git pull origin

(避免任何错误的可能性)

注意:根据您的git版本,这也会对您的推送操作产生影响:请参阅"git checkout --track origin/branchgit checkout -b branch origin/branch之间的差异"。

因此,要准确回答您的问题:没有内置的方法可以使用git获得警告
您可以对rizwaniqbal的答案中推荐的钩子脚本进行版本化(投票支持),但每个用户都必须在自己的repo中声明该钩子。

最新更新