Tôi muốn biết liệu repo cục bộ của mình có được cập nhật hay không (và lý tưởng nhất là nếu chưa, tôi muốn xem những thay đổi).
Làm thế nào tôi có thể kiểm tra điều này mà không làm git fetch
hoặc git pull
?
Tôi muốn biết liệu repo cục bộ của mình có được cập nhật hay không (và lý tưởng nhất là nếu chưa, tôi muốn xem những thay đổi).
Làm thế nào tôi có thể kiểm tra điều này mà không làm git fetch
hoặc git pull
?
Câu trả lời:
Hãy thử git fetch --dry-run
Hướng dẫn sử dụng ( git help fetch
) cho biết:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
không có gì hiển thị?
--all
?
git pull
gần tương đương với a git fetch && git merge
. Nếu tại bất kỳ thời điểm nào bạn chạy tìm nạp mà không có --dry-run
thì bạn đã tìm nạp cục bộ mọi thứ.
git remote show origin
Kết quả:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
Lần sử dụng đầu tiên git remote update
, để cập nhật các bản giới thiệu từ xa của bạn. Sau đó, bạn có thể thực hiện một trong một số điều, chẳng hạn như:
git status -uno
sẽ cho bạn biết liệu nhánh bạn đang theo dõi đang ở phía trước, phía sau hay đã phân kỳ. Nếu nó không nói gì, thì local và remote giống nhau. Kết quả mẫu:Trên DEV chi nhánh
Chi nhánh của bạn đứng sau 'origin / DEV' 7 lần cam kết và có thể được chuyển tiếp nhanh.
(sử dụng "git pull" để cập nhật chi nhánh cục bộ của bạn)
git show-branch *master
sẽ hiển thị cho bạn các cam kết trong tất cả các nhánh có tên kết thúc bằng 'master' (ví dụ: master và origin / master).Nếu bạn sử dụng -v
với git remote update ( git remote -v update
), bạn có thể thấy các nhánh nào đã được cập nhật, vì vậy bạn không thực sự cần thêm bất kỳ lệnh nào.
git remote update ; git status -uno
đã giải quyết nó. git fetch --dry-run
không đưa ra đầu ra ngay cả trong trường hợp địa phương ở phía sau từ xa.
git remote -v update
là câu trả lời cho tôi.
bạn có thể sử dụng git status -uno
để kiểm tra xem chi nhánh địa phương của bạn có được cập nhật với chi nhánh gốc hay không.
git remote update ; git status -uno
đã lừa! Cácgit fetch --dry-run
có đầu ra khi tôi mong đợi nó (và git pull
sẽ kéo mọi thứ).
Không thực sự - nhưng tôi không thấy git fetch
sẽ ảnh hưởng như thế nào vì nó sẽ không thay đổi bất kỳ chi nhánh nào tại địa phương của bạn.
Một giải pháp thay thế khác là xem trạng thái của chi nhánh từ xa đang sử dụng
git show-branch remote/branch
để sử dụng nó như một so sánh mà bạn có thể thấy git show-branch *branch
để xem chi nhánh trong tất cả các điều khiển từ xa cũng như kho lưu trữ của bạn! hãy xem câu trả lời này để biết thêm https://stackoverflow.com/a/3278427/2711378
Bạn sẽ cần đưa ra hai lệnh:
Bạn phải chạy git fetch
trước khi có thể so sánh kho lưu trữ cục bộ của mình với các tệp trên máy chủ từ xa của bạn.
Lệnh này chỉ cập nhật các nhánh theo dõi từ xa của bạn và sẽ không ảnh hưởng đến luồng làm việc của bạn cho đến khi bạn gọi git merge
hoặcgit pull
.
Để xem sự khác biệt giữa chi nhánh cục bộ của bạn và chi nhánh theo dõi từ xa khi bạn đã tìm nạp, bạn có thể sử dụng git diff hoặc git cherry như được giải thích ở đây.
Điều này là không thể nếu không sử dụng git fetch
hoặc git pull
. Làm thế nào bạn có thể biết liệu kho lưu trữ có "cập nhật" hay không mà không cần đến kho lưu trữ từ xa để xem "cập nhật" có nghĩa là gì?
git pull
, điều mà OP cấm rõ ràng trong câu hỏi của mình.
git status -uno
điều này hoạt động và người ta cũng có thể sử dụng git show-branch *master
để xem trạng thái của tất cả các nhánh chính! Bạn vẫn nói nó là không thể? Bạn có thể xem trạng thái của bất kỳ chi nhánh nào miễn là bạn có quyền truy cập vào điều khiển từ xa!
git status
chỉ cho bạn biết trạng thái của các ref tại địa phương của bạn, nó không cho bạn biết liệu các ref tại địa phương của bạn có được cập nhật hay không với các ref từ xa. Một lần nữa: về mặt logic thì không thể biết trạng thái của remote repo là gì nếu không nhận được trạng thái của remote repo. Giai đoạn = Stage. Đây chỉ là định luật cơ bản của không thời gian.
đã cố gắng định dạng câu trả lời của tôi nhưng không được. Vui lòng nhóm stackoverflow, tại sao việc đăng câu trả lời lại khó đến vậy.
không bao giờ có,
answer:
git fetch origin
git status (bạn sẽ thấy kết quả như "Chi nhánh của bạn đứng sau 'origin / master' bởi 9 lần cam kết")
để cập nhật các thay đổi từ xa: git pull