Kadang-kadang saya memeriksa beberapa versi kode untuk diperiksa atau diuji. Saya telah melihat instruksi tentang apa yang harus dilakukan jika saya ingin memodifikasi komit sebelumnya - tetapi anggap saya tidak melakukan perubahan. Setelah saya selesai mis. git checkout HEAD^
, Bagaimana saya kembali ke ujung cabang? .. git log
tidak lagi menunjukkan SHA dari komit terbaru.
git
version-control
Leo Alekseyev
sumber
sumber
git log
kalimat pertanyaan Anda, Anda selalu dapat menjalankangit log --all
(atau lebih bermanfaat,git log --oneline --graph --all
).Jawaban:
Jika Anda tahu komit yang ingin Anda kembalikan adalah kepala cabang tertentu, atau ditandai, maka Anda bisa saja
Anda juga dapat menggunakan
git reflog
untuk melihat apa yang dilakukan orang lain terhadap KEPALA Anda (atau referensi lainnya) sebelumnya.Diedit untuk menambahkan:
Di versi Git yang lebih baru, jika Anda hanya berlari
git checkout
atau sesuatu yang lain untuk memindahkannyaHEAD
, Anda juga dapat melakukannyauntuk beralih kembali ke tempat itu sebelum checkout terakhir. Ini dimotivasi oleh analogi dengan idiom shell
cd -
untuk kembali ke direktori kerja apa pun yang sebelumnya ada.sumber
master
sebenarnya bukan kata kunci apa pun, tapi caranyaHEAD
. Itu hanya nama cabang default di repositori baru. Anda dapat menjalankangit branch
untuk mendapatkan daftar cabang di repositori Anda, dangit tag -l
untuk daftar tag. Demikian pula,origin
adalah nama default remote yang replikasi kloning, tetapi tidak ada yang istimewa tentang itu.git reflog
beri Anda daftar hash, yang bisa Anda gunakangit checkout [commit-hash]
.git checkout master
master adalah tip, atau commit terakhir. gitk hanya akan menunjukkan kepada Anda di mana Anda berada di pohon pada saat itu. git reflog akan menampilkan semua commit, tetapi dalam hal ini, Anda hanya menginginkan tipnya, jadi git checkout master.
sumber
git checkout branchname
Datangi pertanyaan ini sekarang dan ada sesuatu untuk ditambahkan
Untuk membuka komit terbaru:
Penjelasan:
git log --branches
memperlihatkan log komit dari semua cabang lokal-1
membatasi satu komit →--pretty=format:"%H"
format komit terkini untuk hanya menampilkan komit yanggit checkout $(...)
menggunakan output subkulit sebagai argumen untuk checkoutcatatan:
Ini akan menghasilkan kepala terpisah (karena kami checkout langsung ke komit). Ini dapat dihindari dengan mengekstraksi nama cabang menggunakan
sed
, dijelaskan di bawah ini.Untuk pergi ke cabang komit terbaru:
Penjelasan:
git log --branches
memperlihatkan log komit dari semua cabang lokal-1
membatasi hingga satu commit →--pretty=format:"%D"
format commit terbaru untuk hanya menampilkan nama ref| sed 's/.*, //g'
- referensi abaikan semua kecuali yang terakhir dari beberapa referensi (*)git checkout $(...)
menggunakan output dari subkulit sebagai argumen untuk checkout*) KEPALA dan cabang jarak jauh didaftar pertama, cabang lokal terdaftar terakhir dalam urutan abjad, sehingga yang tersisa akan menjadi nama cabang menurut abjad pertama
catatan:
Ini akan selalu hanya menggunakan nama cabang pertama (alfabet) jika ada beberapa untuk komit itu.
Bagaimanapun, saya pikir solusi terbaik hanya akan menampilkan nama-nama referensi untuk komit terbaru untuk mengetahui ke mana harus checkout:
Misalnya buat alias
git top
untuk perintah itu.sumber
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Lihatlah GUI grafis ...
gitk
ini menunjukkan semua commit. Terkadang lebih mudah untuk bekerja secara grafis ... ^^sumber
Anda dapat menggunakan salah satu dari perintah git berikut untuk ini:
sumber
tunjukkan semua cabang dan komit
git log - cabang --oneline
tampilkan komit terakhir
git log - cabang -1 --oneline
tampilkan sebelum komit terakhir
git log --branches -2 --oneline
sumber
sumber
Jika Anda memiliki cabang yang berbeda dari master, salah satu cara mudah adalah dengan memeriksa cabang itu, lalu periksa master. Voila, kau kembali di ujung tuan. Mungkin ada cara yang lebih cerdas ...
sumber
Anda cukup melakukannya
git pull origin branchname
. Ini akan mengambil komit terbaru lagi.sumber
Jika komit terbaru Anda ada di cabang master, Anda bisa menggunakan
sumber