Đến câu hỏi này ngay bây giờ và có một cái gì đó để thêm
Để đi đến cam kết gần đây nhất:
git checkout $(git log --branches -1 --pretty=format:"%H")
Giải trình:
git log --branches
hiển thị nhật ký của các xác nhận từ tất cả các nhánh cục bộ
-1
giới hạn ở một cam kết →
--pretty=format:"%H"
định dạng cam kết gần đây nhất để chỉ hiển thị
git checkout $(...)
đầu ra sử dụng hàm băm của subshell làm đối số cho thanh toán
Ghi chú:
Điều này sẽ dẫn đến một đầu tách ra mặc dù (vì chúng tôi kiểm tra trực tiếp đến cam kết). Điều này có thể tránh được bằng cách trích xuất tên chi nhánh bằng cách sed
giải thích bên dưới.
Để đi đến chi nhánh của cam kết gần đây nhất:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Giải trình:
git log --branches
hiển thị nhật ký xác nhận từ tất cả các nhánh cục bộ
-1
giới hạn ở một cam kết →
--pretty=format:"%D"
định dạng cam kết gần đây nhất để chỉ hiển thị tên ref
| sed 's/.*, //g'
bỏ qua tất cả trừ lần cuối cùng của nhiều ref (*)
git checkout $(...)
sử dụng đầu ra của subshell làm đối số để thanh toán
*) Các nhánh đầu và từ xa được liệt kê đầu tiên, các nhánh cục bộ được liệt kê cuối cùng theo thứ tự giảm dần theo thứ tự bảng chữ cái, do đó, nhánh còn lại sẽ là tên nhánh đầu tiên theo thứ tự bảng chữ cái
Ghi chú:
Điều này sẽ luôn chỉ sử dụng tên nhánh đầu tiên (theo bảng chữ cái) nếu có nhiều cho cam kết đó.
Dù sao, tôi nghĩ rằng giải pháp tốt nhất sẽ chỉ là hiển thị tên ref cho cam kết gần đây nhất để biết nơi thanh toán:
git log --branches -1 --pretty=format:'%D'
Ví dụ: tạo bí danh git top
cho lệnh đó.
git log
câu của câu hỏi của bạn, bạn luôn có thể chạygit log --all
(hoặc hữu ích hơn,git log --oneline --graph --all
).