Cập nhật: Vâng, đã vài năm kể từ khi tôi đăng bài này! Với mục đích cụ thể của tôi là so sánh HEAD với ngược dòng, bây giờ tôi sử dụng @{u}
, đây là một phím tắt đề cập đến HEAD của nhánh theo dõi ngược dòng. (Xem https://git-scm.com/docs/gitrevutions#gitrevutions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).
Câu trả lời gốc: Tôi cũng đã chạy qua vấn đề này. Tôi thường sử dụng nhiều điều khiển từ xa trong một kho lưu trữ duy nhất và thật dễ dàng để quên chi nhánh nào hiện tại của bạn đang theo dõi. Và đôi khi thật hữu ích khi biết điều đó, chẳng hạn như khi bạn muốn xem xét các cam kết địa phương của mình thông qua git log remotename/branchname..HEAD
.
Tất cả nội dung này được lưu trữ trong các biến cấu hình git, nhưng bạn không phải phân tích đầu ra cấu hình git. Nếu bạn gọi git config theo sau là tên của một biến, nó sẽ chỉ in giá trị của biến đó, không cần phân tích cú pháp. Với ý nghĩ đó, đây là một số lệnh để nhận thông tin về thiết lập theo dõi chi nhánh hiện tại của bạn:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
Trong trường hợp của tôi, vì tôi chỉ muốn tìm ra tên của điều khiển từ xa hiện tại của tôi, tôi làm điều này:
git config branch.`git name-rev --name-only HEAD`.remote
git remote show origin
. Câu trả lời chính trong câu hỏi khác là một tập lệnh bash bao quanh câu trả lời đơn giản ở đây, có thể hữu ích với một số người. Hy vọng rằng câu hỏi này sẽ không hoàn toàn đóng cửa.