2010-02-25 19 views
21

Tôi thấy tài liệu git rất khó hiểu về vấn đề này. Tôi muốn làm một điều đơn giản, nhưng có vẻ như làm nó không đơn giản chút nào.Làm cách nào để yêu cầu Git luôn kéo nhánh chính?

Tôi có tình huống sau đây:

$ git remote -v 
origin git://192.168.0.49/mnt/repos 
stick /mnt/titanium/podaci/repos 

tôi có thể sử dụng git pull để lấy và hợp nhất từ ​​nguồn gốc, và rằng hoạt động tốt:

$ git pull 
Already up-to-date. 

tôi có thể kéo từ dính như thế này:

$ git pull stick master 
Already up-to-date. 

Tuy nhiên, khi tôi kéo từ dính mà không chủ phần, tôi nhận được tin nhắn này:

$ git pull stick 
From /mnt/titanium/podaci/repos 
* [new branch]  su2009 -> stick/su2009 
You asked me to pull without telling me which branch you 
want to merge with, and 'branch.master.merge' in 
your configuration file does not tell me either. Please 
name which branch you want to merge on the command line and 
try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details on the refspec. 

If you often merge with the same branch, you may want to 
configure the following variables in your configuration 
file: 

    branch.master.remote = <nickname> 
    branch.master.merge = <remote-ref> 
    remote.<nickname>.url = <url> 
    remote.<nickname>.fetch = <refspec> 

See git-config(1) for details. 

Một số điều nhầm lẫn tôi ở đây. "tệp cấu hình của bạn" có nghĩa là gì ở đây? Tôi nên chỉnh sửa tệp nào và tôi nên nhập chính xác những gì? biệt danh trong trường hợp này là gì?

Tôi hy vọng rằng những gì tôi đang cố gắng hoàn thành là rất phổ biến, nhưng tôi đã không thể tìm thấy câu trả lời thẳng hàng với một ví dụ.

Trả lời

26

"Tệp cấu hình của bạn" có ý nghĩa gì ở đây?

Tệp cấu hình của repo của bạn, được tìm thấy tại .git/config tại gốc của repo của bạn. (Cũng có một tệp cấu hình chung cho mỗi người dùng tại ~/.gitconfig, nhưng bạn không muốn đặt các cài đặt cụ thể ở đó.)

Tôi nên chỉnh sửa tệp nào và tôi nên nhập chính xác những gì?

Bạn có thể sử dụng chương trình git config để ghi thông tin cấu hình, thay vì nhập thông tin theo cách thủ công. Tuy nhiên, nếu bạn muốn thực hiện thủ công, chỉ cần mở .git/config - cú pháp khá đơn giản.

Biệt danh trong trường hợp này là gì?

Biệt danh, trong trường hợp này, là tên của điều khiển từ xa - do đó "dính". Bạn không phải lo lắng về các tùy chọn remote.*, vì các tùy chọn này đã được thiết lập, nhưng bạn cần phải đặt các tùy chọn branch.*. Các tùy chọn này cho Git biết những gì cần hợp nhất khi thực hiện một thanh từ git pull.

Giả sử bạn muốn hợp nhất chính từ thanh khi thực hiện git pull từ thanh. Bạn có thể làm như vậy như thế này:

# Sets stick as default remote for git pull. 
# Note that origin will no longer be the default remote for git pull! 
$ git config branch.master.remote stick 

# Automatically merge in stick's master branch when doing a git pull 
$ git config branch.master.merge refs/heads/master 

Vì vậy, bây giờ, khi bạn làm một git pull mà không cần bất kỳ thông tin từ xa hoặc refspec, nó sẽ lấy tất cả các chi nhánh từ cây gậy, và hợp nhất trong ngành thạc sĩ thanh của.Lưu ý rằng nguồn gốc sẽ không phải làm điều khiển từ xa mặc định nữa; để hợp nhất trong nhánh chính của nguồn gốc, bạn sẽ phải sử dụng git pull origin master.

Nếu bạn không muốn thay đổi điều khiển từ xa mặc định, bạn sẽ phải tiếp tục sử dụng git pull stick master.

+1

Câu cuối cùng của bạn là rất quan trọng. Tôi đã hy vọng có một số cách để giải quyết vấn đề đó. –

+0

Tôi không biết một chi nhánh nào khác. .remote' và 'branch. . Làm việc trong tay và mỗi nhánh chỉ có thể có một danh sách 'từ xa'. – mipadi

+0

Vâng, tôi đoán nó chỉ là cách Git hoạt động. Có lẽ tôi sẽ gửi một yêu cầu tính năng cho các nhà phát triển nếu nó bao giờ nhận được trên dây thần kinh của tôi quá nhiều (mà không phải là rất có khả năng xảy ra). Đã chấp nhận câu trả lời. –

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