我们有一个实际上git fetch; git checkout origin/<branch>
部署某个功能的脚本。我们这样做的原因是我们不想避免本地分支(它是测试服务器),因此脚本只需获取最新的更改并签出,然后重新加载服务器。
我们还生成一个日志,描述每个部署,通过电子邮件发送给某人和存档。有趣的是,我们也发送了已部署的分支,但问题是当我们checkout origin/<branch>
时,我们正在更改为detached head。我用类似的问题阅读some answers,但没有那么具体。
有没有办法在这种情况下打印我的分支(当然,无论用户输入)?
答案 0 :(得分:5)
git symbolic-ref --short HEAD
应告诉您所在的分支,或者如果您不在某个分支上,则会输出错误。
答案 1 :(得分:1)
这里是git nthlastcheckout
,它会从reflog中获取您第n次上次结账时使用的确切字符串(或其最后一个空格后的所有内容):
git config --global alias.nthlastcheckout '!nthlastcheckout'"() {
git reflog |
awk '\$3==\"checkout:\" {++n}
n=='\${1-1}' {print \$NF; exit}
END {exit n!='\${1-1}'}'
}; nthlastcheckout \"\$@\""
示例:
$ git nthlastcheckout
master
$ git nthlastcheckout 2
v1.3.0^2
答案 2 :(得分:0)
@SébastienDawans指出的对我们来说最好的solution是git show -s --pretty=%d HEAD
。输出类似于remotes/origin/<branch name>
,因此可能需要清洁,但是根据我们的需要,它很好。