Làm thế nào để xem các thay đổi mã sau khi kéo git?


87

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?


Tham khảo điều này .
unsalsoul007

Câu trả lời:


98
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.


68

Trước khi kéo

Bạn có thể xem lại các thay đổi như @iblue nói với fetchdifftrướ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 xbên dưới):

SP---o---o [master]
  \
   x---x [origin/master]

Chỉ sau một cú kéo

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

Sau này

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

3
Đây là câu trả lời duy nhất cho phép bạn kiểm tra tệp nào đã thay đổi trong lần kéo cuối cùng khi bạn không nhớ có bao nhiêu cam kết đã được kéo tại thời điểm đó.
kremuwa

22

git pullchỉ là một phím tắt cho git fetchgit 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.


1
`` git diff --name-only master origin / master [path] ''
jiacheo

10

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}

2
Đây là một câu trả lời hay, nhưng lời giải thích không chính xác: "Để so sánh với các nguồn n cam kết phía sau" . Các @{n}cú pháp thực sự có nghĩa là nthtrướ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.
khôn ngoan,

Đây là câu trả lời mà tôi đang tìm kiếm! Cảm ơn vì lời giải thích @wisbucky
tamerlaha

5

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.