现在,我将重点讨论如何在之前提示用户进行确认any进行拉动。
不幸的是,因为没有预拉这样的东西hook http://git-scm.com/docs/githooks.html,我认为你无法得到实际的pull
命令直接为您执行此操作。在我看来,你有两个选择:
1 - Use fetch
then merge
(代替pull
)
而不是跑步git pull
, run git fetch
, then git merge
or git rebase
;崩溃pull
它自然包含两个步骤,这将迫使您仔细检查要合并/变基的内容。
2 - 定义一个在拉取之前要求确认的别名
定义并使用pull
包装器(作为 Git 别名),如果您尝试从名称与当前本地分支不同的远程分支拉取,则会提示您进行确认。
将以下行写入名为的脚本文件git-cpull.sh
(for 确认,然后拉) in ~/bin/
:
#!/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
但当前分支是not master
,在进行任何操作之前,系统会要求您进行确认pull
是实际进行的。
Example
$ 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.