2013-06-27 44 views
15

Không có kho lưu trữ từ xa, chỉ một kho lưu trữ cục bộ với hai nhánh.Sự khác biệt giữa git pull. master vs git merge master

$ git branch -a 
    master 
* devel 

có lệnh sau trong bối cảnh này cùng/từ đồng nghĩa?

$ git pull . master 

$ git merge master 

UPDATE:

$ git help pull cho sau thông tin

SYNOPSIS 
    git pull <options> <repository> <refspec>... 

DESCRIPTION 
    ... 
    Note that you can use . (current directory) as the <repository> to pull 
    from the local repository — this is useful when merging local branches 
    into the current branch. 

Tôi thực sự không hiểu tại sao điều này rất hữu ích như đã đề cập trong manpage này.

+1

không hợp nhất git - Tham gia hai hoặc nhiều lịch sử phát triển cùng nhau. Và git-pull - Lấy từ và hợp nhất với một kho lưu trữ khác hoặc một chi nhánh địa phương – cptnk

Trả lời

8

git pull . master nạp từ kho hiện tại (một không-op) và sau đó sẽ làm điều gì đó để mang lại các chi nhánh hiện tại đến ngày với master. Điều gì đó có thể là hợp nhất nhưng cũng có thể là một lần rebase tùy thuộc vào cài đặt cấu hình pull.rebase hoặc branch.master.rebase.

Trong trường hợp hợp nhất, chiến lược hợp nhất của tôi bị ảnh hưởng bởi pull.twohead.

git merge master sẽ luôn hợp nhất chính với chiến lược hợp nhất mặc định.

11

pull là lệnh kết hợp, fetch theo sau là merge. Với thông số mặc định hoặc hợp lý, nó sẽ đồng bộ hóa nhánh hiện tại của bạn.

Với các thông số như trong câu hỏi, hầu hết công việc của nó bị phá hoại. phần tìm nạp bị loại bỏ để sử dụng repo hiện tại, do đó bị bỏ qua, và bạn yêu cầu một cách rõ ràng lệnh override FETCH_HEAD.

Vì vậy, trong biểu mẫu đó, tôi tin rằng chúng giống hệt nhau (và tôi cũng đặt mục đầu tiên trong danh mục vô nghĩa).

+0

Nó sẽ giống nhau theo cách từ xa là '.', Không? – jszakmeister

+0

như tôi đã chỉ ra không có kho lưu trữ từ xa. vì vậy 'fetch' không làm gì cả. Bạn có thể điều chỉnh câu trả lời của bạn; Tôi rất vui khi đề cập đến việc thường kéo git tương đương với git fetch & git merge. – Hotschke

2

sự khác biệt duy nhất - trong trường hợp thứ hai (git merge master), nó sẽ hợp nhất với không tươi dữ liệu, nhưng với dữ liệu từ bản cập nhật từ xa cuối cùng của bạn. Vì vậy, nếu bạn chỉ cần thực hiện fetch (hoặc git remote update) - chúng hoạt động theo cùng một cách, nhưng nếu bạn cập nhật kho lưu trữ cục bộ một thời gian dài trước đây - nó sẽ hợp nhất với ảnh cũ.

Không chắc giai đoạn trong git pull . master là một cú pháp đúng ...

+0

nó cũng khiến tôi bối rối, nhưng dường như làm việc bỏ qua phần tìm nạp –

Các vấn đề liên quan