1

我们有一个脚本实际上git fetch; git checkout origin/<branch>可以部署某个功能。我们这样做的原因是我们不想避免本地分支(它是一个测试服务器),所以脚本只是获取最新的更改并检查到它,然后重新加载服务器。

我们还生成一个日志,描述每次部署,通过电子邮件发送给某人并存档。有趣的是,我们还发送了已部署的分支,但问题是当我们发送时checkout origin/<branch>,我们正在更改为分离的 head。我读了一些类似问题的答案,但没有那么具体。

在这种情况下,有没有办法打印我是哪个分支(当然,不管用户输入)?

4

3 回答 3

6

git symbolic-ref --short HEAD应该告诉您您在哪个分支上,或者如果您不在分支上则打印错误。

于 2013-06-06T20:26:24.033 回答
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
于 2013-06-06T22:18:33.750 回答
0

@SébastienDawans 指出,对我们来说最好的解决方案git show -s --pretty=%d HEAD是. 输出是这样的remotes/origin/<branch name>,所以可能需要进行清理,但对于我们的需要来说,这很好。

于 2013-06-06T20:31:57.987 回答