Command to enter folder after git clone

Git

下面的脚本,执行之后,可以完成 git clonecd 至目标文件夹内。

!f() {
  local tmp=$(mktemp);
  local repo_name;
  git clone $@ --progress 2>&1 | tee $tmp;
  repo_name=$(awk -F\' '/Cloning into/ {print $2}' $tmp);
  rm $tmp;
  cd $repo_name;
};
f

一些说明:

  • mktemp 可以创建一个临时文件,文件路径存放在 tmp 变量中
  • git clone $@ 中的 $@ 是执行脚本时候所有的传入参数
  • ---progress 2>&1 会将 Git clone 命令的结果输出。这里,默认情况下,clone 的过程数据只有在 error stream 输出到 terminal 的时候,才会显示。因为这里的命令需要将内容通过管道输出到 tmp 临时文件中,所以默认情况下 Git 就不会输出过程的数据了。为了能够让 Git 输出这部分内容,需要加上 --progress
  • tee $tmp 将管道的数据输出到临时文件中
  • awk -F\' '/Cloning into/ {print $2}' $tmp 的部分,会从输出的数据中,寻找 Cloning into 的输出,然后找到具体 clone 到了哪个文件夹中