如果我在分支“x”并尝试从分支“y”拉出来,如何让git向我发出警告?
举个例子;
考虑到我当前的本地工作分支是x,我正在发布:
git pull origin y
此时我希望git发出一个类似于“你正在获取并将一个不同的分支合并到当前工作分支中的警告。你想继续吗?(是/否)”
这可能吗?可能有一些配置选项?
我知道如何恢复这个错误,但我宁愿在犯这样的错误之前得到警告。
答案 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 获得警告。
您可以对rizwaniqbal的answer(upvoted)中建议的钩子脚本进行版本控制,但每个用户都必须在他/她自己的仓库中声明该钩子。