2012-12-19 34 views
5

Gần đây chúng tôi đã chuyển đổi các kho SVN của chúng tôi thành GIT. Dường như chúng tôi đã mất một số cam kết bằng chuyển đổi này và muốn xác minh điều này.Làm cách nào để tìm kiếm các commit git trong kho lưu trữ bằng tin nhắn cam kết?

Vì vậy, chúng tôi muốn tìm một cam kết git phù hợp cho mỗi cam kết svn để kiểm tra xem chuyển đổi đã thực sự xảy ra chưa.

$ git log|grep "some partial commit message" sẽ không đủ vì nó chỉ đi qua trực tiếp ancenstors và bỏ qua các chi nhánh không phải là tổ tiên trực tiếp.

$ git show <commit-hash> sẽ không hoạt động khi svn không có sha1sums.

điều gần nhất tôi thấy là: $ git reflog show --all --grep="releasenotes"|xargs git show --shortstat tuy nhiên điều này dường như không hoàn toàn hoạt động vì có vẻ như grep ở nhiều nơi hơn là thông báo cam kết (Chúng tôi nhận được kết quả dương tính giả).

Tôi cũng cố gắng sử dụng này: $ git rev-list --all|xargs -n1 bash -c 'git show|head -n10'|grep -i release

về cơ bản tôi đang thiếu một phương pháp tốt để in các cam kết thông báo mà không có sự so sánh phiên bản.

[EDIT]

Tôi không chắc chắn chính xác nhưng tôi đoán điều này sẽ liệt kê tất cả bài viết cam kết trong kho.

git rev-list --all|xargs -n1 git log -n1 
+0

Đọc manpage cho git-log sẽ giúp: bạn có thể sử dụng một cái gì đó như 'git log --all --format = | grep ', trong đó' 'sẽ là một cái gì đó giống như" SHA - cam kết tin nhắn "được chi tiết bởi trang người đàn ông –

Trả lời

11

Bạn có thể chỉ cần sử dụng các tùy chọn --all cho git log

git log --all --oneline --graph --decorate | grep "message" 

Đó là tương đương với

git log --all --oneline --graph --decorate --grep "message" 

Hoặc nếu bạn muốn có bối cảnh và không có nhiều của cam kết bạn có thể muốn làm một cái gì đó như

git log --all --oneline --graph --decorate | less 
/message 

Và theo cách đó bạn có thể thấy trong đó cam kết của bạn liên quan đến các cam kết khác.

+0

Câu trả lời hoàn chỉnh hơn tôi. +1 – VonC

0

Bạn cũng có thể sử dụng GUI.

gitk 

Nó sẽ mở ra một giao diện, sau đó viết thông điệp cam kết của mình trong chứa hộp, và nhấn enter.

Nó sẽ hiển thị tất cả các cam kết trùng khớp được đánh dấu.

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