Apakah ada cara untuk menentukan kapan cabang Git dibuat? Saya memiliki cabang di repo saya dan dan saya tidak ingat membuatnya dan berpikir mungkin melihat cap waktu pembuatan akan menyita ingatan saya.
git
branch
git-branch
paxos1977
sumber
sumber
Jawaban:
Menggunakan
Jika Anda lebih suka melihatnya dalam konteks menggunakan gitk, maka gunakan
(Di mana foo adalah nama cabang yang Anda cari.)
sumber
Seperti yang ditunjukkan dalam komentar dan jawaban Jackub , selama cabang Anda lebih muda dari jumlah hari yang ditetapkan dalam pengaturan konfigurasi
gc.reflogexpire
(defaultnya adalah 90 hari), maka Anda dapat menggunakan reflog Anda untuk mengetahui kapan referensi cabang dibuat pertama kali dibuat.Catatan yang
git reflog
dapat mengambil sebagian besargit log
bendera. Perhatikan lebih lanjut bahwaHEAD@{0}
penyeleksi gaya secara efektif adalah pengertian waktu dan, pada kenyataannya, ditangani (dengan cara diretas) sebagai string tanggal. Ini artinya Anda dapat menggunakan flag--date=local
dan mendapatkan output seperti ini:Mungkin juga berguna pada waktu untuk menggunakan
--date=relative
:Satu catatan terakhir:
--all
bendera (yang benar-benar merupakan bendera git-log yang dipahami oleh git-reflog) akan menunjukkan reflog untuk semua referensi yang dikenal direfs/
(bukan hanya,HEAD
) yang akan menunjukkan kepada Anda acara cabang dengan jelas:sumber
gc.reflogexpire
beberapa hari.Pro Git § 3.1 Git Branching - Apa Cabang Apakah memiliki penjelasan yang baik tentang apa sebenarnya cabang git
Karena sebuah cabang hanyalah sebuah penunjuk yang ringan, git tidak memiliki gagasan eksplisit tentang sejarah atau tanggal pembuatannya. "Tapi tunggu dulu," Aku mendengar kamu berkata, "tentu saja git tahu sejarah cabang saya!" Yah, semacam itu.
Jika Anda menjalankan salah satu dari berikut ini:
Anda akan melihat apa yang tampak seperti "sejarah cabang Anda", tetapi sebenarnya adalah daftar komitmen yang dapat dicapai dari 'cabang' yang tidak dapat dijangkau dari master. Ini memberi Anda informasi yang Anda inginkan, tetapi jika dan hanya jika Anda tidak pernah menggabungkan 'cabang' kembali ke master, dan tidak pernah menggabungkan master menjadi 'cabang' sejak Anda membuatnya. Jika Anda telah bergabung, maka riwayat perbedaan ini akan runtuh.
Untungnya reflog sering berisi informasi yang Anda inginkan, seperti dijelaskan dalam berbagai jawaban lain di sini. Gunakan ini:
untuk menunjukkan sejarah cabang. Entri terakhir dalam daftar ini adalah (mungkin) titik di mana Anda membuat cabang.
Jika cabang telah dihapus maka 'cabang' bukan lagi pengenal git yang valid, tetapi Anda dapat menggunakan ini sebagai gantinya, yang mungkin menemukan apa yang Anda inginkan:
Atau di shell Windows cmd:
Perhatikan bahwa reflog tidak akan bekerja secara efektif pada cabang-cabang jarak jauh, hanya yang Anda kerjakan secara lokal.
sumber
gc.reflogexpire
hari, sebagaimana ditunjukkan dalam jawaban dan jawaban ini .git reflog --date=local <branch>
Pertama, jika cabang Anda dibuat dalam
gc.reflogexpire
beberapa hari (default 90 hari, yaitu sekitar 3 bulan), Anda dapat menggunakangit log -g <branch>
ataugit reflog show <branch>
untuk menemukan entri pertama di reflog, yang akan menjadi acara pembuatan, dan terlihat seperti di bawah ini (untukgit log -g
):Anda akan mendapatkan siapa yang membuat cabang, berapa operasi yang lalu, dan dari cabang mana (yah, itu mungkin hanya "Created from HEAD", yang tidak banyak membantu).
Itulah yang dikatakan MikeSep dalam jawabannya .
Kedua, jika Anda memiliki cabang lebih lama dari
gc.reflogexpire
dan Anda telah menjalankangit gc
(atau dijalankan secara otomatis), Anda harus menemukan leluhur bersama dengan cabang tempat cabang itu dibuat. Lihatlah file config, mungkin adabranch.<branchname>.merge
entri, yang akan memberi tahu Anda berdasarkan cabang apa ini.Jika Anda tahu bahwa cabang yang dimaksud dibuat dari cabang master (bercabang dari cabang master), misalnya, Anda dapat menggunakan perintah berikut untuk melihat leluhur yang sama:
Anda juga bisa mencoba
git show-branch <branch> master
, sebagai alternatif.Inilah yang dikatakan gbacon dalam jawabannya .
sumber
Saya belum yakin dengan perintah git untuk itu, tapi saya pikir Anda dapat menemukannya di reflog.
File saya tampaknya memiliki cap waktu unix di dalamnya.
Pembaruan: Tampaknya ada opsi untuk menggunakan riwayat reflog alih-alih riwayat komit saat mencetak log:
Anda dapat mengikuti log ini juga, kembali ke saat Anda membuat cabang.
git log
menunjukkan tanggal komit, bukan tanggal ketika Anda membuat tindakan yang membuat entri di reflog. Saya belum menemukan itu kecuali dengan melihat reflog yang sebenarnya di jalan di atas.sumber
Coba ini
sumber
%
sebelumnya(refname)
| cut -c 5- | sort -r |
dan kemudian menyalurkan melalui grep untuk bulan itu, memberi saya urutan kronologis terbalik daftar, kurang lebih.--sort='-committerdate'
(perhatikan '-' sebelum committerdate untuk urutan kronologis terbalik).Menggunakan:
untuk menampilkan semua siklus hidup repositori Anda di folder saat ini. Nama cabang yang pertama kali muncul (dari bawah ke atas) adalah sumber yang telah dibuat.
Itu berarti:
Pengembangan cabang dibuat (checkout -b) dari master
Fitur cabang-jira35 dibuat (checkout -b) dari pengembangan
Cabang fitur-jira-sut-46 dibuat (checkout -b) dari pengembangan
sumber
Ini adalah sesuatu yang saya buat sebelum saya menemukan utas ini.
sumber
Perintah ini menunjukkan tanggal dibuat cabang
dev
darimain
sumber
Jika Anda ingin mendapatkan detail untuk semua cabang
sumber
Saya menemukan cara terbaik: Saya selalu memeriksa cabang terbaru yang dibuat dengan cara ini
sumber
Dikombinasikan dengan jawaban dari Andrew Sohn ( https://stackoverflow.com/a/14265207/1929406 )
sumber
Ini berhasil untuk saya: (10 tahun kemudian)
Karena tidak ada informasi yang tersimpan pada waktu pembuatan cabang, yang dilakukan adalah menampilkan komit pertama dari masing-masing cabang (
--no-walk
), yang mencakup tanggal komit. Menggunakan--remotes
untuk cabang jarak jauh, atau hilangkan untuk cabang lokal.Karena saya melakukan setidaknya satu komit di cabang sebelum membuat yang lain, ini memungkinkan saya melacak beberapa bulan kreasi cabang (dan mulai fitur dev) untuk keperluan dokumentasi.
sumber: AnoE di stackexchange
sumber
sintaksis:
git reflog --date=local | grep checkout: | grep ${current_branch} | tail -1
contoh:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1
hasil:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0
sumber