引言

在之前的文章中,我们讲述了git实现win/linux之间文件传输的实践。但是在使用过程中,我还是发现了许多问题,比如

1、提交版本时,没有commit名,如果以后万一传输有问题,找不到之前的

2、win和linux单独存放,并写入git忽略文件

其中最主要的就是第一条。

linux

我们先来简单回顾以下,在linux中,提交的代码如下:

gnome-terminal -x bash -c "git add .;git commit --amend --no-edit;git push -f;exec bash"

这个版本的代码都是在同一个版本名上进行改进,并没有设置单独的版本。这里,我们要针对不同情况进行不同的操作,首先需要读取终端屏幕输入;然后根据是否需要提交新版本选择输入版本名或者直接回车;最后脚本自动执行提交程序。

首先需要完成这样的操作,我们的命令就不能放在“”中了,需要单独写入脚本中,因此用于提交的脚本将变为:

gnome-terminal -x bash -c "bash go.sh"

在go.sh中,我们首先使用read指令,读取屏幕,因此前三行代码如下:

#!/bin/bash
git add .
read name

然后需要判断,终端是否有输入,这里需要用到linux中的条件判断if指令,linux中if语句的结构如下:

if []
then

else

fi

这里的判断主要是判断,用的是-z参数,需要注意的是,前中括号的后面,以及后中括号的前面都需要有空格。

最终代码如下:

#!/bin/bash
git add .
read name
if [ -z "$name" ]
then
git commit --amend --no-edit
else
git commit -m "$name"
fi
git push -f
exit

最后的exit是退出终端的意思。

接受代码还是和之前一样就可以。

win

在win中进行如上操作也是一样

start D:\git\Git\git-bash.exe -c "sh ./send.sh"

需要注意“”中的不同写法。

使用截图如下:前面的bash...不影响。

May the force be with you!