GitHub cho Windows '"đồng bộ hóa" làm gì?


87

Với GitHub dành cho Windows, bạn có thể "xuất bản" một nhánh và sau đó "đồng bộ" nhánh đó với GitHub.

nhập mô tả hình ảnh ở đây

Đồng bộ về cơ bản là a git pullgit push? Hoặc là có nhiều đến nó? Nếu tôi muốn thực hiện các bước chính xác giống như "đồng bộ hóa" từ dòng lệnh, tôi phải làm gì?

(Nó không phải là Mã nguồn mở, hoặc tôi chỉ muốn đọc nó.)

Câu trả lời:


52

Đồng bộ hóa không git pull --rebasevà sau đó nếu có thay đổi cục bộ, nó sẽ xảy ra git push.

Từ đây: http://haacked.com/archive/2012/05/21/introductioning-github-for-windows.aspx#87318


2
Điều gì xảy ra nếu có xung đột trong bước rebase?
Svante

26
@Svante nó không thành công và đề nghị mở một trình bao để bạn phân loại mớ hỗn độn. Đó là cách tôi đến trang này :-)
Andiih

8
Điều này có còn đúng không? Tôi vừa thực hiện đồng bộ hóa và kết thúc với một cam kết hợp nhất, điều này sẽ không bao giờ xảy ra nếu luồng là: git pull --rebase; git push
Micah Zoltu

Bất kỳ lời giải thích nào cho nhận xét của @Michas Caldwell, tôi tin rằng anh ấy đúng?
benchuk

Có thể xác nhận nhấn Sync vừa rồi đã thực hiện git pullchứ không phải là a git pull --rebase, do đó tạo thêm một nhánh Merge 'master' của ... commit.
Leo

42

Vì câu trả lời ở trên là hơn hai năm trước, câu trả lời được cập nhật cho câu hỏi này là: do một số lỗi với rebase , nút "đồng bộ hóa" không hoạt động git pull --rebasenữa. Thay vào đó, nó git pullsẽ thực hiện hợp nhất nếu có xung đột, theo ghi chú phát hành này (xem bản phát hành 1.3.0).

Liên kết trên không có sẵn tại thời điểm này. Đây là ghi chú phát hành mới .


2
Thực ra điều đó không hoàn toàn đúng. CHỈ nếu rebase không hoạt động, nó sẽ cố gắng hợp nhất.
Joris Meys

Liên kết ghi chú phát hành bị hỏng.
skolima

2
@JorisMeys Tôi không chắc câu nói của bạn là đúng. Theo kinh nghiệm của tôi, nếu có bất kỳ cam kết nào trước của tôi trên điều khiển từ xa, nó sẽ tạo một cam kết hợp nhất, ngay cả khi nó có thể thực hiện một rebase.
Jerad Rose

@JeradRose Khi tôi viết bình luận của mình, chúng tôi đang ở Github Desktop v. 2.x và hiện tại chúng tôi đang ở 3.3 :-) Nhưng bạn nói đúng, tôi cũng nhận thấy như vậy.
Joris Meys

17

"Đồng bộ hóa" sẽ là bất kỳ hành động nào cần thiết để chi nhánh cục bộ của bạn khớp với chi nhánh từ xa của bạn. Nếu chi nhánh cục bộ của bạn có cam kết mà chi nhánh từ xa của bạn không có, thì "đồng bộ hóa" sẽ đẩy chi nhánh của bạn. Nếu nhánh từ xa đi trước nhánh cục bộ của bạn, thì "đồng bộ hóa" sẽ kéo đầu tiên (cụ thể git pull --rebaselà, như Phil Haack đã giải thích ). "Đồng bộ hóa" chỉ là một phím tắt để khiến cục bộ và điều khiển từ xa phản chiếu lẫn nhau.

Từ trang GitHub :

The sync button turns the complex workflow of pulling and pushing into a single operation. It notifies you when there are new changes to pull down and lets you quickly share local changes.


Nó không chỉ kéo - nó còn có "git pull --rebase", đó là một sự khác biệt quan trọng. Ngoài ra, thứ tự bạn có là sai, kéo trước khi đẩy.
Andiih

2
@Andiih Ngôn ngữ của tôi đã được khái quát hóa và không phải là một danh sách các thao tác có thứ tự. Lệnh được ngụ ý - thông báo tôi nói "nếu chi nhánh từ xa trước chi nhánh địa phương của bạn"? Mô tả của tôi cũng là một trích dẫn trực tiếp từ trang GitHub. Dù vậy, câu trả lời của Matt Rix chi tiết hơn và xứng đáng được đánh dấu là câu trả lời. Tôi đã thực hiện một số chỉnh sửa nhỏ để làm rõ bất kỳ sự nhầm lẫn nào trong câu trả lời của mình.
redhotvengeance

Đồng bộ hóa github có cũng tìm nạp các thay đổi ngược dòng, ngoài nguồn gốc. Tức là tôi haved f9rked một repo, và có một bản sao cục bộ của ngã ba, những gì tôi thực sự muốn là những thay đổi từ thượng nguồn, không chỉ là nguồn gốc
AaronLS

1
@AaronLS GitHub dành cho Windows hiện chỉ được xây dựng để hoạt động với một điều khiển từ xa, cụ thể là origin. Để làm việc với nhiều điều khiển từ xa, bạn sẽ phải sử dụng dòng lệnh. Thông tin liên quan có thể được tìm thấy tại đây , trong "Nhiều điều khiển từ xa trên Git & điều khiển từ xa không phải GitHub".
redhotvengeance

4

Để thêm vào câu trả lời của @ ethanyang ,

Theo bí danh được định cấu hình trong gitconfig,

[alias]
...
sync = !git pull && git push

4
Chỉ vì tò mò, những gì hiện! nghĩa là trong dòng trên?
Scott Romack

@ScottRomack có nghĩa là nó được coi như một lệnh shell: stackoverflow.com/questions/21083933/…
Nicolas Holthaus

GitHub Desktop có bí danh này đã được thiết lập không? Nếu vậy, cấu hình này nằm ở đâu? Tôi không thấy bí danh này trong toàn cầu của mình .gitconfig. Hay đây chỉ là sự ghi đè của chính bạn?
james
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.