Saya agak ingin setara cd -
dengan git. Jika saya di cabang master
dan saya checkout foo
, saya akan senang bisa mengetik sesuatu seperti git checkout -
kembali ke master
, dan dapat mengetik lagi untuk kembali ke foo
.
Apakah ada yang seperti ini? Apakah akan sulit untuk diimplementasikan?
git
git-checkout
Matt Briggs
sumber
sumber
gc-
atau singkatan untukgit checkout -
Jawaban:
Dari catatan rilis untuk 1.6.2
dan
sumber
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, yang merupakan cabang hulu dari cabang saat ini. Ini sangat berguna untuk misalnyagit log @{u}..
yang mendaftar komit upstream yang belum ditarik. Dan kebalikannyagit log ..@{u}
yang hanya komitmen lokal yang belum didorong.Cara paling sederhana untuk melakukan ini saat ini adalah:
... yang merupakan alias dari:
Jika Anda ingin tahu lebih banyak tentang ini, saya menulis seluruh artikel tentang hal ini di sini: Checkout Cabang Sebelumnya Di Git .
sumber
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. Dalam bash Anda harus menulis sesuatu yang setara (dapatkan reflog dan filter ke baris yang berisi string ": checkout:" dan kemudian ekstrak nama cabang). Inilah yang sebenarnya dilakukan gitSeperti yang ditunjukkan oleh @Karl dan dari
git checkout
manual:Jadi keduanya
git checkout -
dangit checkout @{-1}
akan bekerja dalam hal iniPaling dekat saya percaya menggunakangit reflog
dan parse yang terbarumoving from branch1 to branch2
dangit checkout branch1
sumber
Hanya menambahkan beberapa detail pada jawaban sebelumnya untuk memahami mekanisme yang
git checkout @{-N}
digunakan. Ini berjalan reflog untuk memeriksa sejarah checkout, jadi jika Anda ingin menerapkan sesuatu yang serupa pada Anda sendiri, Anda harus dapat mengurai outputgit reflog
mencaricheckout:
garis. Anda dapat memeriksa implementasi di sumber gitsha1_name.c
, khususnya fungsinyainterpret_nth_prior_checkout
.sumber
Versi Git
2.23
memperkenalkangit switch
perintah yang dapat Anda gunakan untuk melakukan itu (dan banyak lagi). Mengutip dokumentasi resmi:Dalam kasus spesifik Anda, Anda dapat mengeluarkan
git switch -
untuk kembali ke cabang tempat Anda sebelumnya. Anda dapat menjalankan perintah yang sama lagi untuk kembali ke cabang pertama.PS Bukan berarti Anda belum tahu bagaimana melakukan itu (maksud saya sudah 7 tahun sejak Anda mengajukan pertanyaan ini), tetapi perintah ini kurang membingungkan dan ramah untuk pemula karena membahas kebingungan umum yang muncul saat menggunakan
git checkout
.sumber
Saya mendarat ke pertanyaan ini dengan pemikiran yang sama untuk checkout cabang saya sebelumnya. Saya menggunakan ohmyz di
Mac
. Perintah di bawah ini membantu saya.sumber
gco
sebagai cara penulisan yang singkatgit checkout
. Jadigco -
telepon sajagit checkout -
.git checkout -
. untuk failafe diperbarui.Solusi paling populer adalah:
Di mana N - langkah menghitung cabang untuk kembali pada sejarah checkout.
sumber
Berikut adalah petunjuk untuk bagian-bagian dokumentasi Git yang menjelaskan
git checkout -
dangit checkout @{-1}
solusi yang diberikan oleh jawaban lain:Ketika menentukan revisi Git untuk perintah apa pun
@{-<n>}
, mis.@{-1}
Berarti " cabang ke- n / komit diperiksa sebelum yang sekarang." Dokumentasi untukgit checkout <branch>
mengulangi: "Anda dapat menggunakan@{-N}
sintaks untuk merujuk ke cabang terakhir ke-N / komit yang diperiksa menggunakangit checkout
operasi."Untuk
<branch>
argumen darigit checkout
, "Anda juga dapat menentukan '-
' yang identik dengan '@{-1}
'."sumber