Beralih ke tag Git lain

180

Bagaimana cara memeriksa versi versi / tag 1.1.4 bundel rspec ?

cd ~/Library/Application\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'
jspooner
sumber

Jawaban:

336

Kloning repositori seperti biasa:

git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle

Kemudian checkout tag yang Anda inginkan seperti itu:

git checkout tags/1.1.4

Ini akan keluar dari tag dalam keadaan 'kepala terpisah'. Dalam kondisi ini, "Anda dapat melihat-lihat, membuat perubahan eksperimental, dan mengkomitnya, dan [membuang yang berkomitmen] tanpa memengaruhi cabang apa pun dengan melakukan checkout lain".

Untuk mempertahankan perubahan yang dibuat, pindahkan ke cabang baru:

git checkout -b 1.1.4-jspooner

Anda dapat kembali ke cabang utama dengan menggunakan:

git checkout master

Catatan, seperti yang disebutkan dalam revisi pertama jawaban ini, ada cara lain untuk checkout tag:

git checkout 1.1.4

Tetapi seperti yang disebutkan dalam komentar, jika Anda memiliki cabang dengan nama yang sama, ini akan mengakibatkan git memperingatkan Anda bahwa refname bersifat ambigu dan memeriksa cabang secara default:

warning: refname 'test' is ambiguous.
Switched to branch '1.1.4'

Steno dapat digunakan dengan aman jika repositori tidak membagikan nama antara cabang dan tag.

Kode Palsu Monyet Rashid
sumber
78
Bagi pemirsa yang driveby, jawaban ini ambigu. Jika ada cabang dan tag disebut 1.1.4. Git akan checkout cabang, bukan tag. Untuk git checkout tags/1.1.4
mengecek
2
Bagaimana kita kembali ke 'bagasi'?
Vinay W
3
@VinayWadhwa git checkout master
ABCD.ca
1
Dan untuk melihat tag, cukup terbitkan git tag.
ACK_stoverflow
8

Pada Git v2.23.0 (Agustus 2019), git switchlebih disukai daripada git checkoutsaat Anda hanya beralih cabang / tag. Saya menduga mereka melakukan ini karena git checkoutmemiliki dua fungsi: untuk berpindah cabang dan untuk memulihkan file. Jadi di v2.23.0, mereka menambahkan dua perintah baru git switch,, dan git restore, untuk memisahkan masalah tersebut. Saya akan memprediksi di beberapa titik di masa depan, git checkoutakan usang.

Untuk beralih ke cabang normal, gunakan git switch <branch-name>. Untuk beralih ke objek seperti komit, termasuk komit tunggal dan tag, gunakan git switch --detach <commitish>, di mana <commitish>nama tag atau nomor komit.

The --detachpasukan pilihan Anda untuk mengenali bahwa Anda berada dalam modus “inspeksi dan percobaan discardable” . Untuk membuat cabang baru dari komit yang Anda gunakan, gunakan git switch -c <new-branch> <start-point>.

chharvey
sumber