Tôi muốn đưa ra câu hỏi này để xem tôi có làm đúng không. Các kịch bản sau đây làm việc trừ kiểm tra để xem nếu cam kết đã được đẩy lên một repo từ xa mà tôi không thể tìm thấy lệnh phù hợp với:Bash/Shell Script Chức năng để xác minh Git Tag hoặc Commit Exists và đã được đẩy tới kho lưu trữ từ xa
#!/bin/bash
set -e # fail on first error
verify_git_ref() {
log "Verifying git tag or commit: \"$1\" ...."
if git show-ref --tags --quiet --verify -- "refs/tags/$1"
then
log_success "Git tag \"$1\" verified...."
GIT_TAG_OR_REF=$1
return 0
elif git rev-list $1>/dev/null 2>&1
then
log_success "Git commit \"$1\" verified...."
GIT_TAG_OR_REF=$1
return 0
else
log_error "\"$1\" is not a valid tag or commit, you must use a valid tag or commit in order for this script to continue"
return 1
fi
}
liên quan: List Git commits not pushed to the origin yet
Vấn đề với điều này là nó không thực sự kiểm tra điều khiển từ xa - nó chỉ kiểm tra những gì bạn biết về điều khiển từ xa (các nhánh từ xa được lưu trữ cục bộ). Điều này sẽ làm việc trong hầu hết các trường hợp, vì nếu bạn đẩy đến điều khiển từ xa, các nhánh từ xa của bạn sẽ được cập nhật. Nhưng nếu điều khiển từ xa kéo từ bạn, bạn sẽ không may mắn - trừ khi bạn tìm nạp trước. (Bạn cũng không cần git rev-parse, tôi không nghĩ.) – Cascabel
Tôi thực hiện lệnh git pull trước khi chạy lệnh này - nhưng bạn nói đúng và tôi nghĩ bạn trả lời là nội tuyến hơn với câu trả lời chung với câu hỏi tôi đặt ra và tôi sẽ đánh dấu câu trả lời của bạn là câu trả lời thực tế. – Freddie