2017-11-22 17 views
5

file của tôi cóLàm thế nào để tìm kiếm một khối mã như một toàn thể

.settings { 
} 


.field { 
    margin-bottom: 1em; 
} 

Tôi muốn biết khi

.settings { 
} 

được thành lập.

Tôi biết nếu tôi muốn tìm kiếm một dòng mã, tôi làm git log -S".settings {".

Nhưng ở đây tôi muốn tìm kiếm

.settings { 
} 

như một toàn thể, tôi đã cố gắng

git log -S".settings {\r}" confirm.less.css 
git log -S".settings {\n}" confirm.less.css 
git log -S".settings {\r\n}" confirm.less.css 

nhưng tất cả retrun gì.

Làm cách nào để tìm kiếm một khối mã dưới dạng toàn bộ tiếp tục ký tự dòng mới?

+0

'git log -S' hiển thị cho bạn khi chuỗi được chỉ định đã được thay đổi trong số https://git-scm.com/docs/git-log. Vì vậy, tôi đoán là cam kết ban đầu đã có khối mã với quy tắc. Thật khó để nói tại sao điều này xảy ra. Hãy xem xét chỉ cần nhìn vào 'git log --follow confirm.css' sẽ cung cấp cho bạn các sửa đổi của tập tin. – Francisco

+0

@Francisco Thay vì tìm kiếm một dòng mã, tôi hỏi làm thế nào để tìm kiếm một khối mã, trong trường hợp này, là '.settings {' và '}' với nhau. – Gqqnbig

+1

Điều này là không thực sự có thể, tôi không nghĩ (nơi Git theo dõi thay đổi line-by-line). Bạn có thể viết một cái gì đó để nhìn vào diffs và xem nếu số lượng các dòng thay đổi là đủ để bao gồm những gì bạn đang tìm kiếm hoặc bạn có thể tự nhìn vào 'git blame' và xem khi mỗi dòng đã được giới thiệu. – Whymarrh

Trả lời

1

Đã xảy ra một số sự cố khi hoạt động bình thường.

Trước tiên, tôi nghĩ bạn cần xử lý các biến số {} metacharacters trong RegEx của bạn bằng cách thoát chúng và bật đối sánh rộng với --pickaxe-regex. Tôi cũng sử dụng một đơn giản \s* để tham lam phù hợp với bất kỳ không gian nào bao gồm cả dòng mới giữa các dấu ngoặc đơn.

Đây là lệnh kết quả mà tôi đã đưa ra

git log -S".settings \{\s*\}" --pickaxe-regex confirm.less.css

nào trả lại cam chứa sự xuất hiện đầu tiên.

3

Hãy thử

git log -L '/^.settings {/,+1':path/to/it 

Điều đó sẽ giúp bạn có được toàn bộ lịch sử của bản cập nhật cho phạm vi đó, nhưng lâu đời nhất trong số họ sẽ là những gì bạn muốn.

Các vấn đề liên quan