小编bra*_*ito的帖子

git - 放弃先前的提交,强制推送到远程

我先解释一下我的情况:

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除了我之外没有人会这样做?

也会删除该评论版本,因为我不希望它可以恢复?

git commit

3
推荐指数
1
解决办法
3074
查看次数

在heredocs中着色,bash

如果我之前已经定义了这样的颜色变量:

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之外

bash colors heredoc

3
推荐指数
2
解决办法
1696
查看次数

在 bash 中取消设置变量检查

我声明了两个变量但未设置:

__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!。但这是不正确的

这是为什么?以及如何进行正确的检查,看看它们是否都丢失了?

bash unset

2
推荐指数
1
解决办法
2908
查看次数

如果未设置,则在Bash中将默认值分配给变量

我知道我能做到:

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.

bash

2
推荐指数
1
解决办法
1203
查看次数

标签 统计

bash ×3

colors ×1

commit ×1

git ×1

heredoc ×1

unset ×1