web-dev-qa-db-ja.com

Git Checkoutの最新タグ

私はシェルスクリプトを書いており、レポの最新バージョンをチェックアウトしようとしています。具体的には、このプロセスを複数のステップに分割します。

  1. リポジトリの最新のタグを変数に保存したい
  2. プリントアウト Checking out version: XX
  3. 最新のタグをチェックアウトする

類似した質問 を見ましたが、タグの名前を変数に保存する方法がわかりません(おそらく、シェルスクリプトの初心者です)。

41
BFTrick

git describe --tagsはあなたに情報を与えるべきです。

bash /シェルスクリプト:

#!/bin/bash
...
latesttag=$(git describe --tags)
echo checking out ${latesttag}
git checkout ${latesttag}
20
exussum
# Get new tags from remote
git fetch --tags

# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)

# Checkout latest tag
git checkout $latestTag
83
Josef Ježek

一部のリポジトリでは、git describe --tagsは情報を提供せず、単純なgit tag | tail -1は、gitが奇妙な方法でタグをソートするため、間違ったタグを取得する可能性があります。

私にとって最高のコマンドは、テールのバリエーションです

VERSION = $(git tag | sort -V | tail -1)

9

情報を変数に入れるには、それを割り当てます:

_myvar=myvalue
_

ただし、変数に定数を割り当てるだけでなく、割り当てる値を計算する必要があります。あなたのケースでは、コマンドの出力を変数に割り当てます。

最初に、最後のタグ名を取得する方法を理解する必要があります。タグ名の作成方法については何も言わなかったので、それはあなたにお任せします。

次に、最後のタグ名を指定するコマンドを作成したら、変数に名前を割り当てる必要があります。 Bashはそれを「コマンド置換」で行います。

例:thetagname=$( command_to_get_tag_name )

したがって、gitが次のように報告する最後のタグを取得する場合:

_git tag | tail -1
_

それを次のような変数に割り当てることができます:

_thetagname=$( git tag | tail -1)
_

そして、あなたはこのような値を使用/見ることができます:

_echo $thetagname
_

または、user1281385によると、次のようになります。

_echo ${thetagname}
_

2つの方法は同じですが、2番目の方法ではリテラルテキストと変数値を組み合わせることができます。

_echo ${thetagname}ing
_

これにより、$ thetagnameの内容に「ing」が追加されます。 bashは、 "thetagnameing"が変数であるとbashが考えるのを防ぐために必要です。

BashのmanページにはEXPANSIONというセクションがあり、7種類の拡張について説明しています。コマンド置換もその1つです。 bashのmanページはかなり大きく、実際にすべての興味深いキーワードを複数回繰り返しているので、その中のものを検索するのは本当に面倒です。 EXPANSIONセクションを見つける方法に関する2、3のヒントを次に示します(ページャーの「少ない」ことについて少し学びます)。

次のようにbashのマニュアルページを読んで、手動リーダーを起動します。

_man bash
_

読者になったら、表示に_/^EXPANSION_と入力して、行の先頭で「EXPANSION」という用語を検索します。 _/_と入力すると、画面の下部に/が表示されますが、manページは引き続き表示されます。これは、パターンを検索するコマンドです。次に、_^EXPANSION_と入力すると、画面の下部にも表示されます。 ^は「行頭で物事を検索する」ことを意味し、EXPANSIONは「リテラル文字列「EXPANSION」を探すことを意味します。その後、_<enter>_と入力します。ここでは、入力後、変換されたコマンドを実行する前に、bashシェルが行で行うすべての種類の展開について説明します。

ページャーでhと入力すると、可能なコマンドのリストを取得できます。

これがあまりにも基本的ではなかったと思います。あなたがそれを見たことがないなら、それを理解するのは難しいです。

1

「git tag --contains | tail -1」、(git tag --contains)は現在のブランチのすべてのタグをリストし、(tail -1)は出力結果のカウントをlに制限します。これは最新のものです。

0
Antutu