Tôi muốn kiểm tra bất kỳ thay đổi mã nào sau khi thực hiện a git pull
. Hiện tại nó chỉ hiển thị cho tôi những tệp nào thay đổi. Làm cách nào để biết mã nào đã thay đổi?
Câu trả lời:
git log --name-status -2
Sẽ hiển thị cho bạn tên của các tệp đã thay đổi trong hai lần cam kết cuối cùng.
git log -p -2
Sẽ cho bạn thấy những thay đổi của chính họ.
Trước khi bạn kéo,
git fetch
git log --name-status origin/master..
Sẽ hiển thị cho bạn những cam kết nào bạn sắp truy xuất, cùng với tên của các tệp.
Bạn có thể xem lại các thay đổi như @iblue nói với fetch
và diff
trước khi hợp nhất:
$ git fetch
$ git diff master...origin/master
Lưu ý dấu chấm ba, có nghĩa là khác với gốc và gốc / chính được chia sẻ (các cam kết được đánh dấu x
bên dưới):
SP---o---o [master]
\
x---x [origin/master]
Dòng đầu tiên trong đầu ra của một lần kéo trông như thế này:
$ git pull
Updating 37b431a..b2615b4
...
Sau đó, bạn có thể chỉ cần làm:
$ git diff 37b431a..b2615b4
Hoặc bất kỳ lệnh nào khác:
$ git log --name-status 37b431a..b2615b4
Nếu đã được một thời gian kể từ khi kéo và bạn muốn biết những thay đổi nào đã mang lại bởi lần kéo cuối cùng, bạn có thể tra cứu nó bằng:
$ git reflog | grep -A1 pull | head -2
sẽ hiển thị mã băm sau khi kéo theo sau là băm trước khi kéo:
b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master
Sau đó, bạn có thể làm điều tương tự với hai hàm băm sau:
git diff 37b431a..b2615b4
Vì git pull
chỉ là một phím tắt cho git fetch
và git merge
, bạn có thể chạy git fetch
để tìm nạp các nhánh từ gốc và sau đó hiển thị sự khác biệt trước khi hợp nhất. Như thế này:
git fetch # Load changes from remote server
git diff master origin/master # Show differences
git merge origin/master # Merge remote changes with local changes
Nếu bạn chạy trên nhánh khác với nhánh chính , tất nhiên bạn nên thay đổi tên nhánh trong các lệnh trên.
Bạn có thể so sánh nội dung được kéo với các nguồn của cam kết ngay trước đó bằng cách,
git diff branch_name@{1}
ví dụ:
git diff master@{1}
Để so sánh với các nguồn mà n cam kết phía sau,
git diff branch_name@{n}
@{n}
cú pháp thực sự có nghĩa là nth
trước đó vị trí của chi nhánh / head. Ví dụ: nếu đã có 10 lần cam kết kể từ lần cuối cùng bạn thực hiện một lần kéo, master@{1}
sẽ đề cập đến vị trí trước đó của master
, đó là 10 lần cam kết trước đó. Đây là lý do tại sao việc sử dụng @{n}
rất hữu ích để kiểm tra các thay đổi sau khi kéo.
Bạn có thể kiểm tra những gì nhận được thay đổi trong khi đẩy và kéo bằng cách này ...
git log --stat