Làm thế nào để kéo kéo từ một chi nhánh địa phương vào một chi nhánh khác?


231

Điều này nghe có vẻ đơn giản, nhưng tôi không thể tìm ra nó. Tôi đã tạo một nhánh thử nghiệm cách đây một thời gian và bây giờ tôi muốn đưa ra tất cả những thay đổi xảy ra với chủ nhân kể từ khi tôi thực hiện nó. Đây là tất cả các địa phương. Tôi muốn kéo từ chủ địa phương vào my_branch địa phương, nhưng tôi không thể làm được. Điều này dường như không hoạt động, nói với tôi rằng chủ không phải là kho git:

git pull master

Câu trả lời:


339

bạn phải nói với git nơi lấy từ, trong trường hợp này từ thư mục / kho lưu trữ hiện tại:

git pull . master

nhưng khi làm việc cục bộ, bạn thường chỉ gọi hợp nhất (kéo nội bộ cuộc gọi hợp nhất):

git merge master

1
Tôi thích git pull . masterbởi vì tôi nghĩ rằng nó sẽ kiểm tra nếu có bất cứ điều gì mới từ nguồn gốc là tốt. Điều này có đúng không?
Josiah Yoder

1
@JosiahYoder không, pull .đặc biệt yêu cầu Git lấy từ kho lưu trữ được đặt tại .(tức là thư mục / kho lưu trữ hiện tại). originchỉ là một cách viết tắt cho "bất kỳ vị trí kho lưu trữ nào được xác định trong .git/configtệp (thường được thiết lập tự động khi nhân bản kho lưu trữ)
knittl

1
Oh! Vì vậy, git pull . mastersẽ kéo từ kho lưu trữ địa phương thay vì nguồn gốc? (Không tìm nạp từ nguồn gốc!?) Có lợi thế nào git pull . masterhơn git merge masterkhông?
Josiah Yoder

2
@JosiahYoder có chính xác, nó sẽ "kéo" từ kho lưu trữ cục bộ thay vì kho lưu trữ gốc. Không có tìm nạp được thực hiện (bởi vì tất cả mọi thứ từ kho lưu trữ cục bộ đã ở đây!). Không có lợi thế - cả hai lệnh làm ít nhiều giống nhau. Nếu bạn đang thực hiện chuyển tiếp nhanh, bạn có thể sử dụng push . origin/branch:branch(không kéo) để cập nhật các nhánh cục bộ mà không cần kiểm tra chúng trước.
knittl

Tôi khen ngợi bạn. Bằng sức mạnh của Greyskull!
R Claven

45

Những gì bạn đang tìm kiếm là hợp nhất.

git merge master

Với pullbạn tìm nạp các thay đổi từ một kho lưu trữ từ xa và hợp nhất chúng vào nhánh hiện tại.


38

Khá cũ bài, nhưng nó có thể giúp ai đó mới vào git.

tôi sẽ đi với

git rebase master
  • lịch sử nhật ký sạch hơn nhiều và không có cam kết hợp nhất (nếu được thực hiện đúng cách)
  • cần phải giải quyết các xung đột, nhưng điều đó không khó.

1
chắc chắn có nhiều cách để một nhóm phát triển quản lý các quy trình phân nhánh của họ. Cá nhân tôi đã sử dụng git được 8 năm và tôi chưa bao giờ phải nổi loạn. Tôi luôn luôn sử dụng hợp nhất, và nó luôn đáp ứng nhu cầu của tôi. Chắc chắn với rebase, giống như hợp nhất, các kịch bản có thể phát sinh trong đó git không thể tự động quyết định kết quả chính xác của việc "hợp nhất" hai bộ thay đổi. Về điểm bạn đã thực hiện về lịch sử cam kết "sạch hơn". Cá nhân, sở thích của tôi là duy trì tất cả lịch sử cam kết, chỉ trong trường hợp tôi cần thực hiện một số "khảo cổ học cam kết" (như thường xảy ra!)
user3441604

-1

Nếu bạn đang tìm kiếm một thương hiệu mới kéo từ một chi nhánh khác như từ địa phương đến chủ, bạn có thể làm theo điều này.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
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.