Tôi muốn xem những thẻ nào tôi có ở địa phương không có sẵn trên một điều khiển từ xa cụ thể. Tôi có thể làm cái này như thế nào? Tôi biết tôi có thể làm git push --tags
để đẩy tất cả. Tuy nhiên, nếu có một số thẻ mà tôi không muốn bị đẩy, làm thế nào để tôi chắc chắn rằng tôi đã không bỏ lỡ một số?Cách liệt kê các thẻ Git chưa được đánh dấu
17
A
Trả lời
22
Bạn có thể sử dụng sau đây để xem các thẻ đang tồn tại tại địa phương nhưng không có trong quy định từ xa:
git show-ref --tags | grep -v -F "$(git ls-remote --tags <remote name> | grep -v '\^{}' | cut -f 2)"
Lưu ý rằng git ls-remote
chương trình cả thẻ chú thích và cam kết nó trỏ tới với ^{}
, vì vậy chúng ta cần để loại bỏ các bản sao.
Một cách khác là sử dụng lá cờ --dry-run
/-n
để git push
:
git push --tags --dry-run
này sẽ hiển thị những gì thay đổi sẽ bị đẩy, nhưng sẽ không thực sự làm cho những thay đổi này.
2
Đối với hồ sơ, tôi đang sử dụng một biến thể của điều này với các 'comm' lệnh:
comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)
Tôi đang sử dụng nó như là một bí danh git trong .gitconfig, với bash thích trích dẫn như thế này:
[alias]
unpushed-tags = "!bash -c \"comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)\""
Các vấn đề liên quan
- 1. Cách liệt kê tất cả các thẻ trỏ đến một cam kết cụ thể trong git
- 2. git: Chỉ liệt kê các tệp được sửa đổi cho tất cả các dấu gạch ngang
- 3. Liệt kê tên, ngày và thư git,
- 4. git: liệt kê các tệp mới chỉ
- 5. Đánh dấu Vim Markdown (liệt kê các mục và xung đột khối mã)
- 6. Liệt kê các tệp trong repo git cục bộ?
- 7. git liệt kê tất cả các lệnh có sẵn
- 8. C mảng chưa được đánh dấu toàn cầu?
- 9. Cách liệt kê các hàng được trả về trong SQL?
- 10. trạng thái git - liệt kê ngày sửa đổi cuối cùng
- 11. Khi liệt kê git-ls-remote tại sao có "^ {}" sau tên thẻ?
- 12. Cách liệt kê các tab trong vim?
- 13. Cách liệt kê các phím CFProperyList/CFDictionary
- 14. Làm cách nào để chỉ liệt kê các tệp sẽ được cam kết?
- 15. Liệt kê ShortCigned được gán trong Excel
- 16. Liệt kê tất cả các kho được phục vụ bởi git-daemon
- 17. Làm thế nào để liệt kê các tập tin được phiên bản trong git?
- 18. Xóa các chi nhánh được liệt kê theo chi nhánh git -a
- 19. Thiết lập Naive Git, Có thể hủy các tệp được liệt kê trên mygitignore không?
- 20. Hiển thị các thẻ html chưa từng có trong Notepad ++
- 21. Git: Liệt kê các chi nhánh git, sắp xếp theo (và hiển thị) ngày
- 22. Làm cách nào để chỉ liệt kê các nhánh đang hoạt động/đã được thay đổi gần đây trong git?
- 23. git tìm các nhánh chưa được gắn
- 24. svn: cách liệt kê các thẻ cuối cùng từ dòng lệnh svn?
- 25. Cách liệt kê tất cả các tệp và thư mục nằm trên thẻ sd
- 26. liệt kê các hội đồng trong GAC
- 27. liệt kê các thiết bị bluetooth được kết nối?
- 28. Chỉ định giá trị cho các loại được liệt kê
- 29. Liệt kê các mô đun được nạp bằng gdb
- 30. Ẩn các loại được liệt kê trong Assembly.GetTypes in .net
Vì bạn đang sử dụng đầu ra của 'git ls-remote' để lọc ra khỏi' show-ref', không có nhiều tác hại trong việc để lại dòng '^ {}'. đơn giản hơn: 'git show-ref --tags | grep -v -F "$ (git ls-remote --tags origin | cut -f 2)" ' – phinze
Đây là lệnh chính xác, ngoại trừ' 'được thay thế bằng' origin'. Sử dụng lệnh này để sao chép/dán: 'git show-ref --tags | grep -v -F "$ (git ls-remote - thẻ xuất xứ | grep -v '\^{}' | cut -f 2)" ' –
funroll