Cập nhật kho lưu trữ cục bộ với các thay đổi từ kho lưu trữ GitHub


567

Tôi đã có một dự án được kiểm tra cục bộ từ GitHub và kho lưu trữ từ xa đó đã có những thay đổi được thực hiện cho nó. Lệnh chính xác để cập nhật bản sao cục bộ của tôi với những thay đổi mới nhất là gì?


26
Đáng chú ý là github đã tạo ra một bộ hướng dẫn rất hữu ích và hữu ích cho việc sử dụng git và github. Tôi thấy chúng là vô giá khi lần đầu tiên tôi chuyển sang git. help.github.com
Đánh dấu vào

Câu trả lời:


791

Có lẽ:

git pull origin master

28
Nó phàn nàn: "Bạn đã yêu cầu kéo từ 'origin' từ xa, nhưng không chỉ định một nhánh. Bởi vì đây không phải là điều khiển từ xa được cấu hình mặc định cho nhánh hiện tại của bạn, bạn phải chỉ định một nhánh trên dòng lệnh." Vì vậy, tôi đã thử "$ git pull origin master" và nó hoạt động tốt.
Juan Lanus

8
git pull master master
Andrzej Rehmann 2/12/14

1
Tôi đã xóa một số tập tin và nó không mang lại chúng nữa, có ý kiến ​​gì không?
Sức mạnh Bảo Bình

1
chúng ta có làm một cam kết git trước khi chạy này không? Mỗi khi tôi chạy lệnh này, tôi kết thúc với 18347213846 tệp đã sửa đổi mà tôi thậm chí không chạm vào !!!
Orkun Ozen

5
Tôi vừa học được một cách khó khăn là việc kéo một nhánh kho lưu trữ từ xa mới không tạo ra một nhánh của tên đó cục bộ, mà thay vào đó, kéo nhánh từ xa đó vào bất cứ nhánh nào xảy ra để kiểm tra. Tôi không chắc chắn làm thế nào để hoàn tác việc bỏ rơi này và nhân bản lại kho lưu trữ. Trong mọi trường hợp, dường như chi nhánh địa phương độc lập với chi nhánh từ xa và người ta phải luôn đảm bảo rằng bạn đang ở trong chi nhánh địa phương dự định trước khi kéo.
Joe Lapp

87

Điều này sẽ làm việc cho mọi repo mặc định:

git pull origin master

Nếu nhánh mặc định của bạn khác master, bạn sẽ cần chỉ định tên nhánh:

git pull origin my_default_branch_name

2
Không hẳn vậy. gây tử vong: Không thể tìm thấy chủ nhân từ xa
Victor Eijkhout 4/2/2015

1
@Eijkhout có thể xảy ra trong trường hợp repo của bạn không có chi nhánh chính và một số chi nhánh khác được đặt làm mặc định
Andrzej Rehmann

62
git fetch [remotename]

Tuy nhiên, bạn sẽ cần hợp nhất bất kỳ thay đổi nào vào các chi nhánh địa phương của bạn. Nếu bạn đang ở một chi nhánh đang theo dõi một chi nhánh từ xa trên Github, thì

git pull

đầu tiên sẽ thực hiện tìm nạp và sau đó hợp nhất trong nhánh được theo dõi


5
Nếu bạn đang sử dụng git fetchphương thức này, bạn cũng sẽ muốn tìm nạp các thẻ với git fetch -t. Nếu bạn hài lòng với các thay đổi ( git log HEAD..FETCH_HEAD), thì bạn có thể hợp nhất chúng với git merge FETCH_HEAD.
Brad Grissom

16

Câu hỏi này rất chung chung và có một vài giả định tôi sẽ đưa ra để đơn giản hóa nó một chút. Chúng tôi sẽ cho rằng bạn muốn cập nhật masterchi nhánh của mình .

Nếu bạn chưa thực hiện bất kỳ thay đổi nào tại địa phương, bạn có thể sử dụng git pullđể đưa ra bất kỳ cam kết mới nào và thêm chúng vào master.

git pull origin master

Nếu bạn đã thực hiện các thay đổi và bạn muốn tránh thêm một cam kết hợp nhất mới, hãy sử dụng git pull --rebase.

git pull --rebase origin master

git pull --rebase sẽ hoạt động ngay cả khi bạn chưa thực hiện thay đổi và có lẽ là cuộc gọi tốt nhất của bạn.


1
Rebase, và sự nguy hiểm của rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Đoạn 2 và 3 của "Tìm hiểu sự nguy hiểm của việc nổi loạn" thực sự khiến tôi nhớ bộ lệnh của SVN.
WillC

9

Với một bản gốc gốc đã được thiết lập, bạn chỉ cần sử dụng lệnh dưới đây -

git pull "https://github.com/yourUserName/yourRepo.git"
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.