我先解释一下我的情况:
我script在新创建的存储库中有一个文件.
然后我做了:
git add script
git commit -m 'initial commit'
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
..但后来我意识到我想要我的script文件的评论剥离版本,所以我做了:
- 从我的script使用中删除了评论sed
git rm script
git add script-no-comments
Run Code Online (Sandbox Code Playgroud)
哪个git识别为重命名的文件,这没关系.
,然后:
git commit -am 'comments removed'
git push origin master
Run Code Online (Sandbox Code Playgroud)
所以现在我有本地和远程,两个提交,第一个是带注释的文件,另一个没有.
我的问题是:我现在如何在本地删除第一个提交,保留我的上一个版本没有注释,然后我想我可以强制推送到远程,从而覆盖那里的提交.我并不关心sha
改变,因为pull除了我之外没有人会这样做?
也会删除该评论版本,因为我不希望它可以恢复?
如果我之前已经定义了这样的颜色变量:
txtred='\e[1;31m'
Run Code Online (Sandbox Code Playgroud)
我如何在heredoc中使用它:
cat << EOM
[colorcode here] USAGE:
EOM
Run Code Online (Sandbox Code Playgroud)
我的意思是我应该写什么代替[colorcode here]将USAGE文本呈现为红色?${txtred}不会起作用,因为这是我在整个bash脚本中使用的,在heredoc之外
我声明了两个变量但未设置:
__var1=
__var2=
Run Code Online (Sandbox Code Playgroud)
现在我设置__var2有一些价值:
__var2=1
Run Code Online (Sandbox Code Playgroud)
当我尝试进行这样的检查时:
[ -z "$__var1" -a -z "$__var2" ] || echo "Both missing!"
Run Code Online (Sandbox Code Playgroud)
我收到了这条消息Both missing!。但这是不正确的。
这是为什么?以及如何进行正确的检查,看看它们是否都丢失了?
我知道我能做到:
echo ${var:-4}
Run Code Online (Sandbox Code Playgroud)
打印4如果var为null,
但-n在这种情况下如何分配..?
echo ${var:--n} 不起作用.
虽然这确实有效..
echo ${var:---n}
Run Code Online (Sandbox Code Playgroud)
但在那种情况下它打印出来--n,我需要它打印-n.