如果从不同的分支拉出来,git会收到警告

时间:2012-09-30 12:39:44

标签: git

如果我在分支“x”并尝试从分支“y”拉出来,如何让git向我发出警告?

举个例子;

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

git pull origin y

此时我希望git发出一个类似于“你正在获取并将一个不同的分支合并到当前工作分支中的警告。你想继续吗?(是/否)”

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

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

2 个答案:

答案 0 :(得分:2)

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

git hooks 中使用条件语句有一个漂亮的小技巧。您可以在git钩子中使用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是否会给你分支名称。

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

答案 1 :(得分:1)

如果您当前的分支已设置为track an upstream branch(如git branch --set-upstream test origin/test中所述),则只需:

 git pull origin

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

注意:根据您的git版本,这也会对您的推送操作产生影响:请参阅“Difference between git checkout --track origin/branch and git checkout -b branch origin/branch”。

所以要准确回答你的问题:没有内置方法可以通过git 获得警告。
您可以对rizwaniqbalanswer(upvoted)中建议的钩子脚本进行版本控制,但每个用户都必须在他/她自己的仓库中声明该钩子。