Mặc dù một tuổi Q & A. Tôi nghĩ rằng tôi muốn ném một trong vì điều này đã làm tôi thất vọng trong một thời gian dài.
Tôi được sử dụng để liệt kê các tệp trong thư mục theo thứ tự thời gian ngược (vui tôi, heh?).Lý do là tôi muốn xem những tập tin mà tôi có (hoặc bất kỳ ai khác) đã thay đổi gần đây.
Git sẽ làm hỏng kế hoạch của tôi vì khi chuyển nhánh, repo cục bộ sẽ ghi đè hoàn toàn tệp được theo dõi từ bản sao (gia tăng ... Tôi biết ...) nằm trong repo cục bộ được đóng gói.
Bằng cách này, tất cả các tệp đã được kiểm tra sẽ mang dấu thời gian của quá trình thanh toán và sẽ không phản ánh thời gian sửa đổi cuối cùng của chúng ..... Làm thế nào để gây phiền nhiễu.
Vì vậy, tôi đã phát minh ra một lớp lót trong bash sẽ cập nhật thuộc tính $ Date: $ bên trong bất kỳ tệp nào VỚI THỜI GIAN SỬA CHỮA LAST THEO NHỮNG GÌ ĐÓ CÓ TRONG HỆ THỐNG FILE sao cho tôi có ngay lập tức tuyên bố sửa đổi lần cuối mà không phải duyệt qua git log
, git show
hoặc bất kỳ công cụ nào khác cung cấp thời gian cam kết ở chế độ đổ lỗi.
Quy trình sau sẽ sửa đổi từ khóa $ Date: $ chỉ trong các tệp được theo dõi sẽ được cam kết với repo. Nó sử dụng git diff --name-only
sẽ liệt kê các tệp đã được sửa đổi và không có gì khác ....
Tôi sử dụng thủ công một lớp này trước khi cam kết mã. Một điều mặc dù là tôi phải điều hướng đến thư mục gốc của repo trước khi áp dụng điều này.
Đây là biến thể mã cho Linux (dán như một dòng đa để có thể đọc)
git diff --name-only | xargs stat -c "%n %Y" 2>/dev/null | \
perl -pe 's/[^[:ascii:]]//g;' | while read l; do \
set -- $l; f=$1; shift; d=$*; modif=`date -d "@$d"`; \
perl -i.bak -pe 's/\$Date: [\w \d\/:,.)(+-]*\$/\$Date: '"$modif"'\$/i' $f; \
git add $f; done
và OSX
git diff --name-only | xargs stat -f "%N %Sm" | while read l; do \
set -- $l; f=$1; shift; d=$*; modif=`date -j -f "%b %d %T %Y" "$d"`; \
perl -i.bak -pe 's/\$Date: [\w \d\/:,.)(+-]*\$/\$Date: '"$modif"'\$/i' $f; \
git add $f; done
Tôi đã thấy điều này mà làm việc khá tốt với các dự án git: https : //github.com/turon/git-rcs-keywords – Mark
@PA Nếu câu trả lời miễn phí không phù hợp với bạn, vui lòng bỏ qua nó. Từ các liên kết được đưa ra ở đây, nó là dễ dàng, đủ để tìm một lời giải thích tốt hơn. Việc khiếu nại cũng không giúp bạn có được kiến thức. Và nó được gọi là Git, chứ không phải GIT. –
Cảm ơn bạn đã trỏ đến Câu hỏi thường gặp về Git. Tôi thấy câu nói này thú vị: "Mở rộng từ khóa ... không thực sự hữu ích." Là một nhà phát triển hỗ trợ, tôi tham khảo các thuộc tính mã nguồn hàng ngày. Ví dụ, các thủ tục lưu trữ cơ sở dữ liệu của chúng tôi nằm trong điều khiển nguồn với các thuộc tính sửa đổi ở trên cùng. Tôi có thể sử dụng thuộc tính sửa đổi để xác minh phiên bản của thủ tục được lưu trữ nào được cài đặt trên cơ sở dữ liệu. –