[英]Make “git pull” ask for confirmation when pulling different branch
当同时与许多项目和分支机构合作时,我偶尔也会犯愚蠢的错误,比如进入错误的分支。 例如,在分支master
我做了git pull origin dangerous_code
并且没有注意到相当长的一段时间。 这个小错误引起了很多混乱。
当我尝试拉出当前已检出的分支以外的分支时,有没有办法让git请求确认? 基本上我想要它确认分支名称是否匹配(签出和被拉出的名称)。
现在,我将重点介绍如何在执行任何拉动之前提示用户进行确认。
不幸的是,因为没有这样的事,作为一个预拉勾 ,我不认为你可以得到实际的pull
命令直接为你做的。 在我看来,你有两个选择:
fetch
然后merge
(而不是pull
) 而不是运行git pull
,运行git fetch
,然后git merge
或git rebase
; 分解pull
入它自然组成的两个步骤会迫使你仔细检查你将要合并/重组的内容。
定义并使用pull
wrapper(作为Git别名),如果您尝试从名称与当前本地分支不同的远程分支中提取,则会提示您进行确认。
git-cpull.sh
~/bin/
名为git-cpull.sh
的脚本文件(用于确认,然后拉 ):
#!/bin/sh
# git-cpull.sh
if [ "$2" != "$(git symbolic-ref --short HEAD)" ]
then
while true; do
read -p "Are you sure about this pull?" yn
case "$yn" in
[Yy]*)
git pull $@;
break
;;
[Nn]*)
exit
;;
*)
printf %s\\n "Please answer yes or no."
esac
done
else
git pull $@
fi
然后定义别名:
git config --global alias.cpull '!sh git-cpull.sh'
之后,例如,如果您运行
git cpull origin master
但是当前分支不是 master
分支,在实际执行任何pull
之前,系统会要求您确认。
$ git branch
* master
$ git cpull origin foobar
Are you sure about this pull?n
$ git cpull origin master
From https://github.com/git/git
* branch master -> FETCH_HEAD
Already up-to-date.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.